我需要比较并获得2个大型二进制文件(最多100 MB)的区别。
对于ASCII格式,我可以使用:
import difflib
file1 = open('large1.txt', 'r')
file2 = open('large2.txt', 'r')
diff = difflib.ndiff(file1.readlines(), file2.readlines())
difference = ''.join(x[2:] for x in diff if x.startswith('- '))
print(difference)
如何让它适用于二进制文件?试过不同的编码,二进制读取模式,但还没有工作。
编辑:我使用.vcl
二进制文件。
答案 0 :(得分:2)
difflib会非常慢,100MB会被归类为非常大......
时间:基本的Ratcliff-Obershelp算法在最坏情况下是立方时间,在预期情况下是二次时间。对于最坏情况,SequenceMatcher是二次时间,并且具有预期情况行为依赖于序列共有多少元素的复杂方式; 最佳案例时间是线性的。
如果您能够容忍缓慢,请尝试difflib.SequenceMatcher
,它适用于几乎所有类型的数据。
这是一个灵活的类,用于比较任何类型的序列对,只要序列元素是可清除的。