我有一个目录,我想比较其中的所有文件,并获得它们之间匹配的百分比。作为起点,我决定打开一个文件,并将其他文件与该文件进行比较:
filelist=[]
diff_list=[]
f= open("D:/Desktop/sample/ff69.txt")
flines= f.readlines()
path="D:/Desktop/sample"
for root, dirnames, filenames in os.walk(path):
for filename in fnmatch.filter(filenames, '*.txt'):
filelist.append(os.path.join(root, filename))
for m in filelist:
g = open(m,'r')
glines= g.readlines()
d = difflib.Differ()
#print d
diffl= diff_list.append(d.compare(flines, glines))
print("".join(diff))#n_adds, n_subs, n_eqs, n_wiered = 0, 0, 0, 0
#
但我的代码不起作用,这意味着当我打印它时,我会得到"无"。有人知道为什么吗?或者,对目录中的所有文件进行逐个比较有什么更好的想法吗?
如果你试图成对比较文件,你可能想要更接近这个的东西:
files = os.listdir('root')
for idx, filename in enumerate(files):
try:
fcompare = files[idx + 1]
except IndexError:
# We've reached the last file.
break
# Actual diffing code.
d = difflib.Differ()
lines1 = open(filename).readlines()
lines2 = open(fcompare).readlines()
d.compare(lines1, lines2)
这将比较文件1-2、2-3、3-4等。当你读取文件时,可能值得优化-文件2正在用于循环迭代1和2-因此如果可能的话,不应该读取两次其内容,但根据文件的数量,这可能是过早的优化。