我正在尝试使用Python对压缩文件进行充气,代码如下:
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
表示一个LZC/^{尝试使用命令行^{} 实用程序来解压缩文件(您的
gzip
程序也可以解压缩它)。文件扩展名“.Z”和迄今为止的尝试听起来像是使用了错误的zLib(但根据发布的链接来看似乎是正确的),或者zLib流不在文件的开头。
您可以使用我的工具Precomp来检测zLib流在文件中的位置:
它应该输出如下内容:
这将告诉您流的位置和要使用的windowbits参数(取反)。
它还将告诉您文件中是否有zLib流,因为正如phihag所说,有可能使用与deflate/zLib不同的压缩方法来压缩文件。注意,在这种情况下,可能会有一些错误检测,因为zLib头的大小只有2个字节,但是可以通过解压缩到<;100字节来识别这些错误。
相关问题 更多 >
编程相关推荐