2017-12-20 12 views
1

zlibを使用してファイルを解凍するためのスクリプトをPython 2.7で実行しました。 私は、Linux上でそれを使用しましたし、それが働いているが、私はWindows上でそれを実行しようとすると、私は次のエラーを取得:ZlibはLinuxでは動作しますがWindowsでは動作しません:データの解凍中にエラー-5が発生する不完全なストリームまたは切り詰められたストリーム

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

:私はこのコードを使用してい

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

また、私は、この他のコードてみました:

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

をしかし、この場合には、それがdatosDescomprimidosに何も書き込まれません。

誰かがそれについて知っていますか? おかげ

答えて

-1

はい、

datosComprimidos = open(archivo).read() 

テキストモードで開いてデータを返すため。あなたはバイナリモードでそれを読む必要があります。

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

それはLinux上で重要ではありませんが、それは他のために、すべての10値は13値で付加され、Windowsで問題ありませんし、それがデータを破損(CRを追加ウィンドウズ・テキストに準拠するLFがバイナリ・ストリームには適用されません!)

ボーナスとして、コードは現在Python 3に準拠しています。

withブロックにすることを使用することがより神託されることに注意してください:ファイルが閉じられたときに(ブロックを終了するとき)

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

ので、我々は制御

+0

であることが確認された、ありがとうございました問題! –

+0

私がダウンボントを取得したとき、私はそれについていくつかの説明をしたい...私は本当に気にしない、私はいくつかを取ることができるように見えるが、そこに、私は困惑しています。 –

関連する問題