2016-05-28 5 views
0

Irgendwelche Ideen, wie folgende Code zu beheben (Python 3.4.3):Python 3.4: zlib, abzulassen und gemeinsame dict

import zlib 


hello = b'hello' 

co = zlib.compressobj(wbits=-zlib.MAX_WBITS, zdict=hello) 
data = co.compress(hello) + co.flush() 

do = zlib.decompressobj(wbits=-zlib.MAX_WBITS, zdict=hello) 
data = do.decompress(data) 

print(data) 

schlägt für mich mit

zlib.error: Error -3 while decompressing data: invalid distance too far back 

Was ich zu tun versuchen, ist das Dekomprimieren von deflate, das mit dem gemeinsamen Wörterbuch komprimiert wurde.

Antwort

0

Sie können negative wbits nicht mit einem Wörterbuch verwenden. Negative wbits werden den zlib-Header und -Trailer los, aber der zlib-Header weiß, wie dekomprimiert ein Wörterbuch verwendet.

Einfach die wbits Optionen loswerden.

+0

Ich muss "Deflate dekomprimieren, die mit Shared Dictionary komprimiert wurde". Wenn ich wbits loswerde, wird zlib fehlschlagen, weil ich keinen zlib Header und Trailer habe. –

+0

Was zitierst du? Können Sie einen Link bereitstellen? –

+0

Ich zitiere meine Frage. Wenn Sie fragen, wie ich mit dem gemeinsamen Wörterbuch deflate, dann verwende ich Go - https://golang.org/pkg/compress/flate/#NewWriterDict –