确定2个大二进制文件的区别?

时间:2017-03-13 17:25:47

标签: python binary difflib

我需要比较并获得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二进制文件。

1 个答案:

答案 0 :(得分:2)

对于大文件,

difflib会非常慢,100MB会被归类为非常大......

  

时间:基本的Ratcliff-Obershelp算法在最坏情况下是立方时间,在预期情况下是二次时间。对于最坏情况,SequenceMatcher是二次时间,并且具有预期情况行为依赖于序列共有多少元素的复杂方式; 最佳案例时间是线性的

如果您能够容忍缓慢,请尝试difflib.SequenceMatcher,它适用于几乎所有类型的数据。

  

这是一个灵活的类,用于比较任何类型的序列对,只要序列元素是可清除的。

Pythone Doc - class difflib.SequenceMatcher