基本的には、私は日々の仕事のために2つのファイルを比較したいと思っていました&一致するレコードを持つ2つの新しいファイルを生成したかった&不一致レコード両方のファイルから。python - 大きなサイズのファイルを処理する際の問題
私は以下のPythonスクリプト&を書きましたが、いくつかのレコードを持つファイルサイズでは正常に動作しています。
しかし、200,000と500,000レコードのファイルで同じスクリプトを実行すると、結果として生成されるファイルが有効な出力を得られません。
したがって、以下のスクリプトを確認して、間違った出力を引き起こしている問題を特定するのに役立つでしょうか?
ありがとうございます。
from sys import argv
script, filePathName1, filePathName2 = argv
def FileDifference(filePathName1, filePathName2):
fileObject1 = open(filePathName1,'r')
fileObject2 = open(filePathName2,'r')
newFilePathName1 = filePathName1 + ' - NonMatchingRecords.txt'
newFilePathName2 = filePathName1 + ' - MatchingRecords.txt'
newFileObject1 = open(newFilePathName1,'a')
newFileObject2 = open(newFilePathName2,'a')
file1 = fileObject1.readlines()
file2 = fileObject2.readlines()
Differece = [ diff for diff in file1 if diff not in file2 ]
for i in range(0,len(Differece)):
newFileObject1.write(Differece[i])
Matching = [ match for match in file1 if match in file2 ]
for j in range(0,len(Matching)):
newFileObject2.write(Matching[j])
fileObject1.close()
fileObject2.close()
newFileObject1.close()
newFileObject2.close()
FileDifference(filePathName1, filePathName2)
Edit-1:上記のプログラムはエラーなしで実行されます。その出力は間違っており、プログラムは大きなファイルを乗り越えるのに非常に長い時間がかかります。
エラーとは何か、または無効な出力と言うことができます。あなたはいくつかの例を挙げることができます –
'file2'を' set'にしなければならないと言いたいのですが、ルックアップの時間は恐ろしいでしょう。実際には、両方のラインリストからセットを作成し、 'set'メソッドを使用して交差/差分を実行します。はるかに速くなるでしょう。 –
私はあなたが "それは終わらない/それは永遠に走る"という意味だと思いますよね? –