pythongzip解压后中文_Python用chun解压gzip块

我有一个内存和磁盘有限的环境,在这个环境中,我需要以基于字符串的块(通过xmlrpc二进制传输)来解压缩发送给我的gzip文件的内容。但是,在gzip头上使用zlib.decompress()或zlib.decompressobj()/decompress()两个barf。我已经尝试过通过gzip头(文档化的here)进行偏移,但仍然未能避免barf。gzip库本身似乎只支持从文件解压缩。

下面的代码片段简单说明了我想做什么(除了在现实生活中,缓冲区将由xmlrpc填充,而不是从本地文件读取):#! /usr/bin/env python

import zlib

CHUNKSIZE=1000

d = zlib.decompressobj()

f=open('23046-8.txt.gz','rb')

buffer=f.read(CHUNKSIZE)

while buffer:

outstr = d.decompress(buffer)

print(outstr)

buffer=f.read(CHUNKSIZE)

outstr = d.flush()

print(outstr)

f.close()

不幸的是,正如我所说,这个酒吧有:Traceback (most recent call last):

File "./test.py", line 13, in

outstr = d.decompress(buffer)

zlib.error: Error -3 while decompressing: incorrect header check

理论上,我可以将源于xmlrpc的数据馈送到StringIO中,然后将其用作gzip.gzip file()的fileobj,然而,在现实生活中,我没有足够的内存来将整个文件内容以及解压缩的数据保存在内存中。我真的需要一块一块地处理它。

回退的方法是将xmlrpc源数据的压缩从gzip改为纯zlib,但是由于这会影响到其他子系统,所以如果可能的话,我宁愿避免它。

有什么想法吗?

你可能感兴趣的:(pythongzip解压后中文)