Update: as @Mark Adler pointed out ; partial content can be unzipped using zlib.decompressobj :
>>> decompressor = zlib.decompressobj() >>> decompressor.decompress(part) "let compress some t"
where part is defined below.
--- The following is an old comment:
By default, zlib does not handle partial content in Python.
It works:
>>> compressed = "let 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 compress some text"
This does not work if we truncate it:
>>> 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
The same if we explicitly use zlib :
>>> import zlib >>> zlib.decompress(compressed) "let 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
source share