我是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