2017-12-20 4 views
1

Ich habe ein Skript auf Python 2.7 zum Dekomprimieren einer Datei mit zlib getan. Ich habe es unter Linux verwendet und es funktioniert, aber wenn ich versuche es auf Windows laufen zu lassen ich die folgende Fehlermeldung erhalten:Zlib dekomprimieren Skript arbeitet auf Linux, aber nicht auf Windows: Fehler -5 beim Dekomprimieren von Daten: unvollständiger oder abgeschnittener Stream

Error -5 while decompressing data: incomplete or truncated stream.

Ich verwende diesen Code:

datosComprimidos = open(archivo).read() datosDescomprimidos = zlib.decompress(datosComprimidos)

Außerdem habe ich diesen anderen Code versuchen:

datosDescomprimidos = zlib.decompressobj().decompress(datosComprimidos, zlib.MAX_WBITS) 

Aber in diesem Fall ist es nichts auf datosDescomprimidos schreibt.

Jeder weiß etwas darüber? ja Dank

Antwort

-1

, weil

datosComprimidos = open(archivo).read() 

die Daten offen in Text gibt Modus. Sie müssen es in Binär-Modus zu lesen:

datosComprimidos = open(archivo,"rb").read() 

es nicht auf Linux Rolle, aber es spielt eine Rolle in Windows, weil sonst alle 10 Werte vorangestellt mit 13 Werte und es verdirbt die Daten (Zugabe von CR vor LF, um Windows-konform zu sein, gilt nicht für einen binären Stream!)

Als Bonus ist Ihr Code jetzt Python 3-konform.

Beachten Sie, dass es wäre pythonic, dass in einem with Block zu verwenden:

with open(archivo,"rb") as f: 
    datosComprimidos = f.read() 

so steuern wir, wenn die Datei geschlossen wird (wenn der Block Verlassen)

+0

Vielen Dank, das war das Problem! –

+0

Wenn ich Downvotes bekomme, möchte ich eine Erklärung dazu haben ... Es ist mir wirklich egal, wie du sehen kannst, kann ich etwas nehmen, aber da bin ich verwirrt. –

Verwandte Themen