比较文件名上的目录

2024-09-27 19:32:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要比较A和B两个目录的文件名

A包含的文件比B多(分别约15000/20000),具有相同的名称/不同的内容。在

我有:

迪拉:'doctor_Weiss.csv', 'doctor_Urlici.csv', 'doctor_Basler J. Rudolph.csv'

目录:'doctor_Weiss.csv', 'doctor_Urlici.csv'

我需要dirA dirB中的所有文件(来自dirA):

diffAB:'doctor_Basler J. Rudolph.csv'

我试过了:

import os
from os.path import join

fpA = {}
for root, dirs, files in os.walk('C:\A\docs'):
    for name in files:
        fpA[name] = 1
fpB = {}
for root, dirs, files in os.walk('C:\B\docs'):
    for name in files:
        fpB[name] = 1

 a = []
 for name in fpA.keys():
     if not(name in fpB.keys()):
         a.append(name)

没用。”a'包含来自B的所有文件,而不仅仅是a-B

我还试图遍历两个目录并创建一组文件,但都没有成功(同样,所有的文件都来自B)。在

谢谢你的帮助


Tags: 文件csvnamein目录forosfiles
3条回答

这个怎么样?在

>>> from os import listdir
>>> set(listdir(dirA)).difference(listdir(dirB))

os.listdir获取当前目录下的所有文件,然后使用set.difference()获得dirA中的差异,而不是dirB中的差异。在

在最后一个for循环中,您编写了fpa.keys()而不是fpA.keys()和{},而不是{}。使用适当的变量名,它将起作用。它对我有用。在

你可以用set来获取文件的差异。在

import os
from os.path import isfile
list_A = [x for x in os.listdir(dirA) if isfile(x)]
list_B = [x for x in os.listdir(dirB) if isfile(x)]
diff = set(list_A) - set(list_B)

相关问题 更多 >

    热门问题