Python 如何在两个大文本文件中找到相同的行?

Python 如何在两个大文本文件中找到相同的行?,python,Python,我想比较两个大文本文件(200M)以获得相同的行数。 在Python中如何做到这一点?因为它们只有200M,所以分配足够的内存,读取它们,对每一行按升序排序,然后像在合并操作中一样并行遍历两个行集合,并删除只在一个集合中出现的行 如果要按原始顺序输出,请在集合中保留行号,并按上述行号对其进行排序 合并操作:为每个集合保留一个索引,如果两个索引处的行匹配,则增加两个索引,否则删除较小的行并仅增加该索引。如果任一索引超过最后一行,请删除其他集合中的所有剩余行 优化:使用散列稍微优化比较;在初始读取中

我想比较两个大文本文件(200M)以获得相同的行数。

在Python中如何做到这一点?

因为它们只有200M,所以分配足够的内存,读取它们,对每一行按升序排序,然后像在合并操作中一样并行遍历两个行集合,并删除只在一个集合中出现的行

如果要按原始顺序输出,请在集合中保留行号,并按上述行号对其进行排序

合并操作:为每个集合保留一个索引,如果两个索引处的行匹配,则增加两个索引,否则删除较小的行并仅增加该索引。如果任一索引超过最后一行,请删除其他集合中的所有剩余行


优化:使用散列稍微优化比较;在初始读取中进行哈希运算

您可能可以使用标准模块。该模块提供了几种从各种输入中创建差异增量的方法。

以下是来自:

免责声明:我真的不知道这对于200Mb有多大的效率,但我想值得一试:

我对两个~80mb的文件尝试了以下方法,结果是在3GB内存的intel i3机器上运行约2.7秒

f1 = open("one")
f2 = open("two")

print set(f1).intersection(f2)

这些线路是按顺序排列的吗?可以订购吗?可能是@agks mehx的副本编辑别人的代码时要非常小心,我是认真的。@J.F.Sebastian谢谢!更正了。@agksmehx完全没有问题:)
f1 = open("one")
f2 = open("two")

print set(f1).intersection(f2)