私はPythonの初心者です。私は2つのファイルを比較したいと思います。私の考えは次のとおりです。2つのファイルを1行ずつ比較し、3番目のファイルに比較の差を付けて書き込みます。次に、出力をより明確にして、最初に各ファイルの行番号を比較したいのですが、私が見つけたのはforループの後に3番目のファイルが空白になったことです。 2つのファイルの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:
可能な限り既存のコードの多くを維持、呼び出すメソッドは、私たちが
0
で、ファイルの先頭に戻って指示することができますseek()
です実際にある程度の学術出版物がある主題。 http://dl.acm.org/citation.cfm?id=2554893、またはhttp://www.cs.man.ac.uk/~norm/papers/ssdbm08.pdfから始めることができます(後者の調査かなり特殊なデータセットのコンテキストでのみツールがどのように機能するか)対照的に、変更点を特定するのではなく、単に同等性を判断するだけの目的ならば、difflibは非常に重く(必要以上にCPUとメモリを大量に消費するアルゴリズムを実行します)。私は速いyes/noを得るためにSAXスタイルのイベントストリームを比較することをお勧めします。 –ありがとう、しかし、私はスクリプトがうまく動作しない理由が不思議です – Emily