1. ホーム
  2. python

[解決済み] 2つのファイルを比較し、共通する行を削除する

2022-02-07 13:18:41

質問

2つのファイルがあります。ファイル1 データあり

DF2SVT-(.CD(),.CP(clk),.D(),.SDN(),.Q(na));

OAI3DSVT-(.A1(na),.A2(),.A3(),.B(),.ZN(y));

GLHSVT-(.D(v),.E(),.Q(y));

DCCDSVT-(.I(w),.ZN(y));


とデータ入りのファイル2

GLHSVT-(.D(v),.E(),.Q(y));

file2 の行が file1 に存在する場合、file1 からその行を削除し、file1 の残りの行を表示します。 だから、私は出力ファイルfoutを次のようにしたい。

DF2SVT-(.CD(),.CP(clk),.D(),.SDN(),.Q(na));

OAI3DSVT-(.A1(na),.A2(),.A3(),.B(),.ZN(y));

DCCDSVT-(.I(w),.ZN(y));

を使用して2つのファイルの共通行を印刷する方法を知っています。

for line in file1 & file2:
    if line:
       print line

しかし、私は一致した場合、ファイルからその共通行を削除する方法を取得していない。

どうすればいいですか?

両ファイルの行を別々の変数に読み込む。最初のファイルの行を繰り返し、それぞれの行が2番目のファイルに存在するかどうかをチェックし、存在しない場合は最初のファイルに保存します。

with open(file1, "r") as file1:
     lines_file1 = file1.readlines()
with open(file, "r") as file2:
     lines_file2 = file2.readlines()
     with open(file1, "w") as f_w:
           for line in lines_file1:
               if line not in lines_file2
                  f_w.write(line)

この方法の欠点は、ファイル全体をメモリに読み込むことになることです。