[英]Python zlib inflate error
我正在尝试使用此代码使用Python来扩展zlib
压缩文件:
import zlib
data = open("3B42.110531.21.6A.HDF.Z", 'rb').read()
inflated = zlib.decompress(data)
f = open('3B42.110531.21.6A.HDF', 'wb')
f.write(inflated)
f.close()
我已经用不同的选项做了几次尝试:
zlib.decompress (zlib.decompress(data,-15))
zlib.decompress(data[2:-4]) / zlib.decompress(data[2:] /.. )
无论如何,我一直没有收到这条消息:
Traceback (most recent call last):
File "C:\opt\Python25\Lib\site-packages\pythonwin\pywin\framework\scriptutils.py", line 325, in RunScript
exec codeObject in __main__.__dict__
File "E:\Tesis\data\uncompress.py", line 6, in <module>
inflated = zlib.decompress(data)
error: Error -3 while decompressing data: incorrect header check
唯一的区别是在zlib.decompress
使用负参数:无效块类型。
import zlib
data = open("3B42.110531.21.6A.HDF.Z", 'rb').read()
inflated = zlib.decompress(data,-15)
f = open('3B42.110531.21.6A.HDF', 'wb')
f.write(inflated)
f.close()
Traceback (most recent call last):
File "C:\opt\Python25\Lib\site-packages\pythonwin\pywin\framework\scriptutils.py", line 325, in RunScript
exec codeObject in __main__.__dict__
File "E:\Tesis\data\uncompress.py", line 6, in <module>
inflated = zlib.decompress(data,-15)
error: Error -3 while decompressing data: invalid block type
我确定文件没有损坏,我可以从WinRAR打开它。 (环境:Windows x64,Python 2.5,我猜这个文件是在Unix机器上...下载的二进制文件)
我已经阅读了以下链接
文件扩展名“.Z”和您到目前为止尝试的尝试听起来像是使用zLib错误(但根据您发布的链接似乎是正确的)或zLib流不在文件的开头。
您可以将我的工具Precomp与文件一起使用来检测文件中zLib流的位置:
precomp -v -slow 3B42.110531.21.6A.HDF.Z
它应该输出这样的东西:
Possible zLib-Stream (slow mode) found at position 85, windowbits = 15
Can be decompressed to 9264 bytes
这将告诉您流的位置和要使用的windowbits参数(否定)。
它还会告诉你文件中是否有zLib流,因为正如phihag所说的那样,文件可能会使用与deflate / zLib不同的东西进行压缩。 请注意,在这种情况下,可能会有一些误检测,因为zLib标头的大小只有2个字节,但可以通过解压缩到<100个字节来识别。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.