2017-12-20 4 views
1

zlib을 사용하여 파일의 압축을 푸는 데 Python 2.7에서 스크립트를 수행했습니다. 나는 리눅스에서 사용했습니다 그것은 작동하지만, 내가하려고하면 다음과 같은 오류 얻을 창에서 실행하기 :Zlib은 Linux에서 작동하지만 윈도우에서는 작동하지 않는 스크립트를 압축합니다. 데이터 압축 해제 중 오류 -5 : 불완전하거나 잘린 스트림

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

나는이 코드를 사용하고 있습니다 :

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

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

그러나이 경우

, 그것은 datosDescomprimidos에 아무것도 기록하지 :

또한, 나는이 다른 코드를 시도했습니다.

아무도 그것에 대해 알지 못합니까? 감사

답변

-1

예,

datosComprimidos = open(archivo).read() 

텍스트 모드에서 열려 데이터를 반환하기 때문에. 당신은 바이너리 모드로 읽을 필요가 :

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

리눅스에 문제가되지 않지만, 다른 있기 때문에, 모든 10 값이 13 값 앞에 추가되어, Windows에서 문제 수행하고 데이터를 손상 (CR 추가 Windows 텍스트를 준수하는 LF가 바이너리 스트림에는 적용되지 않습니다!)

보너스로, 이제 코드는 파이썬 3과 호환됩니다. 파일이 닫힐 때 (블록을 ​​종료 할 때)

+0

그했다, 대단히 감사합니다

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

그래서 우리는 제어 : with 블록에 그것을 사용하는 것이 더 파이썬이 될 것이라고

주 문제! –

+0

내가 downvotes를 얻을 때, 나는 그것에 대해 약간의 설명을하고 싶다. .. 나는 정말로 걱정하지 않는다. 내가 볼 수 있듯이, 나는 약간을 가질 수 있지만, 나는 거기에 의아해한다. –

관련 문제