2016-04-25 1 views
0

私はPythonで2つのファイルを比較するソリューションを探しましたが、実際には以下のコードを共有していました。これは、スクリプトがファイル全体を読み込んで比較するためです。メモリに大きな影響を与えることなく同じことをするスクリプトが必要です。Pythonの2つのファイルを比較しながらメモリエラーを防ぐ

with open('ip1.txt', 'r') as file1: 
with open('ip2.txt', 'r') as file2: 
    file1_unique = set(file1) 
    same = file1_unique.intersection(file2) 

same.discard('\n') 

with open('match_ips.txt', 'w') as file_out: 
for line in same: 
    file_out.write(line) 
+0

あなたが同じことを行うスクリプトを必要としています。あなたが見つけたコードにいくつか変更を加えることを考えましたか?何にこだわっていますか? StackOverflowはコード作成サービスではないことを覚えておいてください。私たちはあなたのためにコードを書いていません。通常、ここで人々はエラーを指摘します。 –

答えて

0

前述したように、メモリ内のファイル全体を読むことは問題です。だから、ファイル全体を読んでおらず、比較できるように、どうやって変更するのですか?出来ますか?

ファイルがソートされているか、最初にソートできるかによってヒントが異なります(ヒント:unix sortコマンド)。

2つのファイルはソートされている場合は、行(ヒント:あなたはまた、UNIXを使用することができます:diffコマンドを)して、ファイルの行を比較することができ

def adv(gen): 
    try: 
    v = next(gen) 
    except StopIteration: 
    v = None 
    return None 

with open('a.txt') as f1: 
    with open('b.txt') as f2: 
    a = adv(f1) 
    b = adv(f2) 
    while (a,b) != (None, None): 
     if b is None or a < b: 
     print(a) 
     a = adv(f1) 
     elif a is None or b > a: 
     print(b) 
     b = adv(f2) 
     else: 
     # the lines are the same, advance both files 
     a = adv(f1) 
     b = adv(f2) 
+0

Pyklerに感謝します。私はPythonプログラミングにはとても新しいです。ここのコードは、ファイルの並べ替えや両方の​​比較に役立ちますか?コメントを追加して、より理解できるようにしてください。 – Oba

関連する問題