Decompression with zlib
Albert Hopkins
marduk at letterboxes.org
Wed Apr 8 19:08:12 EDT 2009
On Wed, 2009-04-08 at 23:51 +0200, Emma Li wrote:
> Hello,
>
> I'm trying to do compression/decompression of stuff with zlib, and I
> just don't get it...
> Here is an example. I assume that dec should be "a", but it isn't. dec
> turns out to be an empty string, and I don't understand why...
>
> ===================
> import zlib
> compressor = zlib.compressobj(6) # level
> decompressor = zlib.decompressobj() # wbits
>
> cmpr = compressor.compress("a")
> print "compressed", len(cmpr)
> dec = decompressor.decompress(cmpr)
> print "decompressed", len(dec)
>
> # unconsumed tail and unused data
> print "decompressor.unconsumed_tail", decompressor.unconsumed_tail
> ##print "decompressor.unused_data", decompressor.unused_data
>
> dec += decompressor.flush()
> print "after flushing", len(dec)
> ===================
>
It looks like you forgot to flush the compressor object. Try insead:
import zlib
compressor = zlib.compressobj(6)
decompressor = zlib.decompressobj()
cmpr = compressor.compress("a")
cmpr += compressor.flush()
print "compressed", len(cmpr)
dec = decompressor.decompress(cmpr)
dec += decompressor.flush()
print "decompressed", len(dec)
More information about the Python-list
mailing list