【发布时间】:2017-02-01 07:35:54
【问题描述】:
我有一个包含多个块的 Gzip 文件。每个块都以
开头1F 8B 08
以
结尾00 00 FF FF
我尝试在 linux 中使用 7-Zip 和 gzip 工具解压文件,但我总是收到一个错误,说文件无效。 所以我写了这个python脚本
import zlib
CHUNKSIZE=1
f=open("file.gz","rb")
buffer=f.read(CHUNKSIZE)
data=""
r=CHUNKSIZE
d = zlib.decompressobj(16+zlib.MAX_WBITS)
while buffer:
outstr = d.decompress(buffer)
print(r)
buffer=f.read(CHUNKSIZE)
r=r+CHUNKSIZE
outstr = d.flush()
我注意到当它到达第二个块的标题时
00 00 00 FF FF 1F 8B 08
在 FF 和 1F 之间的点 脚本返回
zlib.error: 解压数据时出现错误 -3: 无效的块类型
我将块的大小设置为 1,这样我就可以确切地知道问题出在哪里。 我知道问题不在文件中,因为我有多个以相同方式构造的文件,它们显示完全相同的错误。
【问题讨论】:
标签: gzip compression gzipstream