【Python3を使用】2つのcsvファイルの内容を比較し、内容が同じであればスクリプトを出力させたい。つまり、すべての行が一致しているかどうか、一致していない場合は、一致していない行数を知らせてくれるはずです。
また、後でコードを変更して、一致しないすべての行を別のファイルに書き込む柔軟性が欲しいです。
さらに、2 つのファイルには技術的にはまったく同じ内容が含まれている必要がありますが、行の順序が同じではない場合があります (ヘッダーを含む最初の行を除く)。
入力ファイルは次のようになります。
field1 field2 field3 field4 ...
string float float string ...
string float float string ...
string float float string ...
string float float string ...
string float float string ...
... ... ... ... ...
私が現在実行しているコードは次のとおりですが、正直なところ、これが最良の (最も pythonic な) 方法であるかどうかはわかりません。また、try: while 1: ...
コードが何をしているのかわかりません。このコードは、フォーラムと python ドキュメントを精査した結果です。これまでのところ、コードは非常に長時間実行されます。
私は非常に新しいので、コードに関するフィードバックをお待ちしております。また、可能な推奨事項について説明をお願いします。
コード:
import csv
import difflib
'''
Checks the content of two csv files and returns a message.
If there is a mismatch, it will output the number of mismatches.
'''
def compare(f1, f2):
file1 = open(f1).readlines()
file2 = open(f2).readlines()
diff = difflib.ndiff(file1, file2)
count = 0
try:
while 1:
count += 1
next(diff)
except:
pass
return 'Checked {} rows and found {} mismatches'.format(len(file1), count)
print (compare('outfile.csv', 'test2.csv'))
編集: ファイルには重複が含まれている可能性があるため、セットに保存することはできません(すべての重複が削除されるためですよね?)。