我下载了一个.gz文件,并使用“gzip-d”成功地解压缩了它。但是当我试图使用pythonzlib逐块解压缩时,它出错了。在
CHUNK = 1024 * 1024
infile = open('2019-07-06-13.log.gz')
d = zlib.decompressobj(32 + zlib.MAX_WBITS)
while True:
chunk = infile.read(CHUNK)
if not chunk:
break
data = d.decompress(chunk)
print len(chunk), len(data)
print "#####"
因为文件很小,所以这个循环只运行一次。“len(data)”小于“len(chunk)”的打印结果肯定是错误的。在
输出:
^{pr2}$同时,在我用gzip-c重新压缩我之前说过的用“gzip-d”创建的解压文件后,我用我的代码解压重新压缩的文件,结果镜头向右,这意味着我的代码对普通的gz文件很好用。在
gzip格式与zlib格式不同:
为了解压缩.gz文件,您应该使用一个内置的gzip模块。在
谢谢大卫灵的提示!关键问题是源gz文件是由多个gz子文件串联而成的,这使得它的解压稍微复杂一些。在
解决方法如下:
相关问题 更多 >
编程相关推荐