0

私は2つのファイルを持っています.file1にはコンテンツが含まれています

ああ

bbb

ccc

ファイル2にはコンテンツが含まれています

ccc

ddd

ええ

ああ

うーん

bbb

うーん

file2 に file1 の行が含まれている場合、その行は file2 から削除されます。最後に、file2 は ddd eee rrr nnn のようになります それに、私のコードは

f1 = open("test1.txt","r")
f2 = open("test2.txt","r")

    fileOne = f1.readlines()
    fileTwo = f2.readlines()
    f1.close()
    f2.close()
    outFile = open("test.txt","w")
    x = 0
    for i in fileOne:
        if i !=  fileTwo[x]:
            outFile.writelines(fileTwo[x])
        x += 1

outFile.close()

ありがとうございました。

4

3 に答える 3

4
with open("f1.txt") as f1:
    s1 = set(f1)
with open("f2.txt") as f2, open("f3.txt","w") as f3:
    f3.writelines(x for x in f2 if x not in s1)

コンテキスト マネージャーを使用してファイルを閉じることをお勧めします (これが のwith動作です)。

setaよりも a のメンバーシップをチェックする方がはるかに効率的ですlist

余分な空白の可能性がある場合は、次のように行を削除する必要があります

with open("f1.txt") as f1:
    s1 = set(x.strip() for x in f1)
with open("f2.txt") as f2, open("f3.txt","w") as f3:
    f3.writelines(x for x in f2 if x.strip() not in s1)
于 2013-05-15T16:45:38.517 に答える