簡體   English   中英

如何在Python中將兩個目錄中的所有文件相互比較?

[英]How to compare all of the files in directory with each other two by two in Python?

我有一個目錄,我想比較它中的所有文件,並獲得它們之間匹配的百分比。 作為起點,我決定打開一個文件並將其他文件與該文件進行比較:

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 - 所以不應該讀取其內容如果可能的話兩次,但這可能是過早優化,具體取決於文件的大小。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM