我有两个文本文件,应该有很多匹配的行,我想知道文件之间究竟有多少行匹配.问题是两个文件都很大(一个文件大约3gb,另一个文件大于16GB).所以很明显使用read()或readlines()将它们读入系统内存可能会有很大问题.有小费吗?我写的代码基本上只是一个2循环和一个if语句来比较它们.
解决方法:
由于输入文件非常大,如果你关心性能,你应该考虑使用grep -f. -f选项从文件中读取模式,因此根据您所使用的确切语义,它可以执行您需要的操作.你可能也想要-x选项,只采取整行匹配.因此,Python中的所有内容可能如下所示:
child = subprocess.Popen(['grep', '-xf', file1, file2], stdout=subprocess.PIPE)
for line in child.stdout:
print line