【发布时间】:2016-03-13 17:38:15
【问题描述】:
我有一个从库调用中读取的字节缓冲区,我想解压缩作为单个文本文件的内容。
我尝试使用zlib,但出现此错误:
>>> import zlib
>>> zlib.decompress(buffer)
error: Error -3 while decompressing data: incorrect header check
但是ZipFile 可以工作,但我必须使用临时文件:
import zipfile
f = open('foo.zip', 'wb')
f.write(buffer)
f.close()
z = ZipFile('foo.zip')
z.extractall()
z.close()
with open('foo.txt', 'r') as f:
uncompressed_buffer = f.read()
是否可以使用zlib,如何避免使用临时文件?
【问题讨论】:
-
您是否尝试过使用 BytesIO 对象而不是写入磁盘
-
from zlib import decompress, MAX_WBITS; decompress(gz_bytes, 16 + MAX_WBITS)会做到的。另请参阅here。 -
@bbayles 这个
incorrect header check也有同样的问题 -
@PadraicCunningham 这没有帮助,因为我必须给
filename给ZipFile而不是文件指针 -
zlib的 gzip 压缩和zipfile的 PKZIP 压缩之间存在差异。我猜你是后者?
标签: python zip zlib unzip zipfile