更新:@Mark Adler pointed out;部分的なコンテンツはzlib.decompressobj
を使用して解凍することができる。part
は以下に定義される
>>> decompressor = zlib.decompressobj()
>>> decompressor.decompress(part)
"let's compress some t"
。
---古いコメントは次のとおりです。デフォルトzlib
ことで
はPythonで部分コンテンツを処理しません。
これは動作します:
>>> compressed = "let's compress some text".encode('zip')
>>> compressed
'x\x9c\xcbI-Q/VH\xce\xcf-(J-.V(\xce\xcfMU(I\xad(\x01\x00pX\t%'
>>> compressed.decode('zip')
"let's compress some text"
我々はそれを切り捨てる場合、それは動作しません:
>>> part = compressed[:3*len(compressed)/4]
>>> part.decode('zip')
Traceback (most recent call last):
File "<input>", line 1, in <module>
File ".../lib/python2.7/encodings/zlib_codec.py", lin
e 43, in zlib_decode
output = zlib.decompress(input)
error: Error -5 while decompressing data: incomplete or truncated stream
同じ我々は明示的zlib
を使用する場合:
>>> import zlib
>>> zlib.decompress(compressed)
"let's compress some text"
>>> zlib.decompress(part)
Traceback (most recent call last):
File "<input>", line 1, in <module>
error: Error -5 while decompressing data: incomplete or truncated stream
出典
2013-12-17 02:57:03
jfs
おかげで、はいdecompressobjを使用して()働いた。私は単にzlib.decompress()を使用していて、エラーを出していました。 dc_obj = zlib.decompressobj()とdecomp_data_str = dc_obj.decompress(orig_data_str)を使用すると問題が解決しました。 – JohnSantaFe