在Python中比较两个大文件

11 投票
1 回答
7080 浏览
提问于 2025-04-16 11:14

我有两个很大的文本文件,每个文件差不多有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()

撰写回答