Zlib解压缩脚本在Linux上工作,但不在Windows上:解压缩数据时出错:不完整或截断流

时间:2017-12-20 14:39:03

标签: linux windows python-2.7 zlib

我在python 2.7上做了一个脚本,用于使用zlib解压缩文件。 我已经在Linux上使用它并且它正在工作,但是当我尝试在Windows上运行它时会出现以下错误:

  

解压缩数据时出错-5:不完整或截断的流。

我正在使用此代码:

localhost:9983

此外,我还尝试了其他代码:

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

但在这种情况下,它没有在datosDescomprimidos上写任何内容。

任何人都知道一些事情吗? 感谢

1 个答案:

答案 0 :(得分:-1)

是的,因为

datosComprimidos = open(archivo).read()

text 模式返回打开的数据。您需要以二进制模式读取它:

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

在Linux上无关紧要,但它在Windows中很重要,因为所有10值前面都有13值,它会破坏数据(在LF之前添加CR为windows符合文本不适用于二进制流!)

作为奖励,您的代码现在符合python 3标准。

请注意,在with块中使用它会更加pythonic:

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

所以我们控制文件何时关闭(退出块时)