区分Python中的两个大文件
我有两个大的文本文件,每个都接近2GB。我需要类似于区分Python中的两个大文件,python,diff,Python,Diff,我有两个大的文本文件,每个都接近2GB。我需要类似于diff f1.txt f2.txt的东西。在python中有没有快速完成此任务的方法?标准difflib太慢。我认为有一种更快的方法,因为difflib完全是用Python实现的。如何使用difflib来处理大文件?不要在内存中加载文件,而是在文件和diff的文件中逐块迭代。例如,一次100行 import difflib d = difflib.Differ() f1 = open('bigfile1') f2 = open('bigf
diff f1.txt f2.txt的东西。在python中有没有快速完成此任务的方法?标准difflib
太慢。我认为有一种更快的方法,因为difflib
完全是用Python实现的。如何使用difflib来处理大文件?不要在内存中加载文件,而是在文件和diff的文件中逐块迭代。例如,一次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()
为什么不使用diff f1.txt f2.txt
?@delnan:因为它将使我的脚本依赖于平台。Get diff of files只是脚本的其他部分之一。使用psyco acceleration或Unladen Swallow或PyPy build进行尝试是否可行?作为一个小参考,您能否告诉我们difflib需要多长时间来比较您计算机上的文件,以及您希望看到什么样的加速?@chmullig我需要两个列表(或文件)。第一个列表必须包含在第二个文件中添加的字符串,第二个列表必须包含在第二个文件中删除的字符串。另一个快速且可移植的选项是要求用户为平台安装diff实用程序,然后通过python包装器使用。python的difflib
无论您做什么都很慢。两个几乎相同的文件,每个1MB,在最好的情况下需要0.5秒,在最坏的情况下需要几分钟。二进制差取0.033s。