如何对编码内容执行差异

时间:2015-09-01 11:23:23

标签: python encoding gzip diff

我想对编码内容执行DIFF(主要是gzip),有什么办法吗? 现在我正在解码内容并执行差异,这会增加很多时间开销。

我使用python zlib库进行decodig和libdiff进行diff。

2 个答案:

答案 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。