Gzip格式文件(gzip例如,使用程序创建的文件)使用“放气”压缩算法,该压缩算法与zlib使用的压缩算法相同。但是,使用zlib膨胀gzip压缩文件时,该库将返回Z_DATA_ERROR。
如何使用zlib解压缩gzip文件?
python
zlib库支持:
选择windowBits
但是zlib可以解压缩所有这些格式:
例子
测试数据:
>>> deflate_compress = zlib.compressobj(9, zlib.DEFLATED, -zlib.MAX_WBITS)
>>> zlib_compress = zlib.compressobj(9, zlib.DEFLATED, zlib.MAX_WBITS)
>>> gzip_compress = zlib.compressobj(9, zlib.DEFLATED, zlib.MAX_WBITS | 16)
>>>
>>> text = '''test'''
>>> deflate_data = deflate_compress.compress(text) + deflate_compress.flush()
>>> zlib_data = zlib_compress.compress(text) + zlib_compress.flush()
>>> gzip_data = gzip_compress.compress(text) + gzip_compress.flush()
>>>
明显的测试zlib:
>>> zlib.decompress(zlib_data)
'test'
测试deflate:
>>> zlib.decompress(deflate_data)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
zlib.error: Error -3 while decompressing data: incorrect header check
>>> zlib.decompress(deflate_data, -zlib.MAX_WBITS)
'test'
测试gzip:
>>> zlib.decompress(gzip_data)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
zlib.error: Error -3 while decompressing data: incorrect header check
>>> zlib.decompress(gzip_data, zlib.MAX_WBITS|16)
'test'
数据还与gzip模块兼容:
>>> import gzip
>>> import StringIO
>>> fio = StringIO.StringIO(gzip_data)
>>> f = gzip.GzipFile(fileobj=fio)
>>> f.read()
'test'
>>> f.close()
自动标头检测(zlib或gzip)
加入32到windowBits将触发标题检测
>>> zlib.decompress(gzip_data, zlib.MAX_WBITS|32)
'test'
>>> zlib.decompress(zlib_data, zlib.MAX_WBITS|32)
'test'
使用gzip代替
对于gzip带有gzip标头的数据,您可以gzip直接使用模块。但请记住,在引擎盖下,gzip使用zlib。
fh = gzip.open('abc.gz', 'rb')
cdata = fh.read()
fh.close()
null 在最近的更新中,解压库工作,但解包不工作。请跳到底部9月16日的更新。 我已经尝试了几个JavaScript库,但仍然无法使其工作: Pako:https://github.com/nodeca/pako null Imaya的zlib:https://github.com/imaya/zlib.js 错误: 仍然使用Imaya的zlib,结合这个堆栈溢出问题:解压缩javascript
我的javascript代码是 它运行时显示消息错误“不支持的压缩方法”。但是我尝试用在线工具http://i-tools.org/gzip解压,它返回正确的字符串。
Stability: 2 - Stable zlib 模块提供通过 Gzip 和 Deflate/Inflate 实现的压缩功能,可以通过这样使用它 const zlib = require('zlib'); 压缩或者解压数据流(例如一个文件)通过zlib流将源数据流传输到目标流中来完成。 const gzip = zlib.createGzip(); const fs = require('f
我想在JavaScript中做解压缩图像。我已经用C#使用gzip压缩了图像。如何在JavaScript中解压缩gzipped数据? C#代码
问题内容: 有人可以向我解释zlib库在Nodejs中如何工作吗? 我对Node.js很陌生,还不确定如何使用缓冲区和流。 我的简单情况是一个字符串变量,我想将字符串压缩或解压缩(压缩或膨胀,gzip或gunzip等)到另一个字符串。 即(我希望它如何工作) 感谢您的帮助:) 问题答案: 更新 :没意识到在节点0.5中有一个新的内置“ zlib”模块。我在下面的答案是针对第三方node- zlib
处理内存中的数据 # zlib_memory.py import zlib import binascii original_data = b'This is the original text.' print('Original :', len(original_data), original_data) compressed = zlib.compress(original_dat