我是Python的初學者,我想比較兩個文件。這裏是我的想法:逐行比較兩個文件,並將它們寫入第三個文件,並進行比較。然後我想讓輸出更加清晰,我首先比較每個文件的行號,但是我發現在for循環之後,結果之一的第三個文件是空白的。如果我爲這兩個文件刪除for循環,這沒關係。這裏是腳本:Python - for循環後的輸出爲空
import difflib
import sys
with open('file1','r') as file1:
with open ('file2','r') as file2:
line_num1=sum(1 for line in file1)
line_num2=sum(1 for line in file2)
diffInstance = difflib.Differ()
diffList = list(diffInstance.compare(file1.readlines(), file2.readlines()))
with open ('result', 'w') as result:
for i,line in enumerate(diffList):
result.write(line)
if line_num1 == line_num2:
if line.startswith('+'):
sys.stdout.write('Current-Line: {}, text: {}'.format(i-1,line))
elif line.startswith('-'):
sys.stdout.write('Previous-Line: {}, text: {}'.format(i+1,line))
elif line_num1 > line_num2:
x = line_num1-line_num2
elif line_num1<line_num2:
y = line_num2-line_num1
建設有用的diff是一個實際上有一定數量的學術出版物的主題。您可以從http://dl.acm.org/citation.cfm?id=2554893或http://www.cs.man.ac.uk/~norm/papers/ssdbm08.pdf開始(儘管後面的調查工具如何在一些相當專業的數據集中工作)。如果你的目標僅僅是確定平等而不是識別變化,相反,「difflib」是非常重量級的(運行比必要的更多的CPU和內存密集型算法);我建議比較SAX風格的事件流以獲得快速的是/否。 –
謝謝,但我想知道爲什麼腳本不能正常工作 – Emily