我有两个大文本文件,每个文件大约2GB。我需要像diff f1.txt f2.txt
这样的东西。有没有办法在python中快速完成这项任务?标准difflib
太慢了。我假设有更快的方法,因为difflib
完全用Python实现。
答案 0 :(得分:4)
如何以脚本可以处理大文件的方式使用difflib?不要将文件加载到内存中,而是遍历文件的文件并以块的形式进行差异。例如,一次100行。
import difflib
d = difflib.Differ()
f1 = open('bigfile1')
f2 = open('bigfile2')
b1 = []
b2 = []
for n, lines in enumerate(zip(f1,f2)):
if not (n % 100 == 0):
b1.append(lines[0])
b2.append(lines[1])
else:
diff = d.compare("".join(b1), "".join(b2))
b1 = []
b2 = []
print ''.join(list(diff))
diff = d.compare("".join(b1), "".join(b2))
print ''.join(list(diff))
f1.close()
f2.close()