两行文件之间的区别

我有两个巨大的文件(file1和file2)。 这两个文件被组织成行。 我需要生成第三个文件file3其中有文件1,但不在文件2中的行。行不是有序的。

什么是在Windows中最简单(最聪明)的方式?

最好的策略可能取决于文件的大小。 如果第一个文件可以放入内存,那么可以轻松地创建一组文件,并从该文件中删除file2中的行。 这需要与file1大小大致成比例的内存量。

 with open('file1') as f1: lineset = set(f1) with open('file2') as f2: lineset.difference_update(f2) with open('file3', 'w') as out: for line in lineset: out.write(line) 

请注意,此解决方案也将消除来自file1重复行。

虽然我可能自己使用set方法,但另一个选项是difflib在标准库中:

 from difflib import Differ with open('a.txt') as a, open('b.txt') as b: missing_from_b = [ diff[2:] for diff in Differ().compare(a.readlines(), b.readlines()) if diff.startswith('-') ] print missing_from_b