在Python中比较两个大文件
我有两个很大的文本文件,每个文件差不多有2GB。我需要做的事情类似于 diff f1.txt f2.txt
这个命令。有没有什么方法可以在Python中快速完成这个任务?标准的 difflib
处理起来太慢了。我觉得应该有更快的方法,因为 difflib
完全是用Python写的。
1 个回答
6
你可以考虑使用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()