我想对编码内容执行DIFF(主要是gzip),有什么办法吗? 现在我正在解码内容并执行差异,这会增加很多时间开销。
我使用python zlib库进行decodig和libdiff进行diff。
答案 0 :(得分:1)
如果存在任何差异,则执行压缩文件的差异是没有意义的,因为在未压缩数据中的第一个差异之后整个压缩文件将不同。如果未压缩数据中存在一小部分差异,那么找到这些差异的唯一方法是解压缩数据。
答案 1 :(得分:0)
您可以使用bsdiff4。它允许二进制内容的差异(或具有很长行的文本)。
这是一个示例用法。首先,我们构建10**6
a
字节数组
import bsdiff4
a = bytes(10**6 * 'a')
然后,制作数组的副本,并引入差异
b = bytearray(a)
b[100:106] = ' diff '
我们要求差异:
diff = bsdiff4.diff(a, bytes(b))
此差异可用于从b
检索a
:
bsdiff4.patch(a, diff) == b
它适用于python 2和python 3。