我已经在 python 2.7 上编写了一个脚本,用于使用 zlib 解压缩文件。 我已经在 Linux 上使用它并且可以正常工作,但是当我尝试在 Windows 上运行它时出现以下错误:
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 上写入任何内容。
有人知道吗? 谢谢
最佳答案
是的,因为
datosComprimidos = open(archivo).read()
返回以文本 模式打开的数据。您需要以二进制模式阅读它:
datosComprimidos = open(archivo,"rb").read()
这在 Linux 上无关紧要,但在 Windows 中却很重要,因为否则,所有 10
值都会以 13
值作为前缀,这会破坏数据(添加LF 之前的 CR 与 Windows 文本兼容不适用于二进制流!)
作为奖励,您的代码现在符合 Python 3 标准。
请注意,在 with
block 中使用它会更符合 pythonic:
with open(archivo,"rb") as f:
datosComprimidos = f.read()
所以我们控制文件何时关闭(退出 block 时)
关于linux - Zlib 解压缩脚本适用于 linux 但不适用于 windows : error -5 while decompressing data: incomplete or truncated stream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47908440/