zlib模块提供了Python的Zlib压缩库(http://www.zlib.net)的实现,该库是GNU项目的一部分。
本文讨论了zlib模块中定义的重要功能。
该功能是该模块的主要接口decompress()
。该函数通过压缩作为参数提供给它的数据来返回字节对象。该函数还有一个称为level的参数,它控制压缩程度。整数形式,取值范围是0〜9。最小值0表示无压缩,9表示最佳压缩。压缩级别越高,压缩字节对象的长度越大。
此功能与compress()
方法相反。它检索未压缩的数据。此函数可以具有一个称为wbits的可选参数,该参数控制历史记录缓冲区的大小以及标头和结尾格式的性质。
以下语句借助compress()
函数压缩字符串对象
>>> import zlib >>> c = zlib.compress(b'hello python') >>> c b'x\x9c\xcbH\xcd\xc9\xc9W(\xa8,\xc9\xc8\xcf\x03\x00\x1e\xf0\x04\xd7'
而该decompress()
函数检索原始Python字符串。
>>> zlib.decompress(c) b'hello python'
该模块由具有两个对应类别的压缩和解压缩对象的定义组成。
compressobj() -此构造函数返回用于压缩数据流的压缩对象。此对象的两个重要方法是
compress() -返回压缩的字节对象。
flush() -由于压缩对象处理流,因此某些压缩数据可能会保留在缓冲区中。此方法清空缓冲区。
下面的示例通过将刷新后的数据添加到compress()
method的返回值中来设置压缩对象并构造一个压缩数据对象。
>>> s1 = b'hello python' >>> c = zlib.compressobj() >>> s2 = c.compress(s1) >>> s2 = s2+c.flush() >>> s2 b'x\x9c\xcbH\xcd\xc9\xc9W(\xa8,\xc9\xc8\xcf\x03\x00\x1e\xf0\x04\xd7'
decompressobj() -这充当解压缩对象的构造函数,该解压缩对象从流中解压缩大数据。此对象提供以下方法
decompress() -此方法返回未压缩的数据
flush() -此方法清空缓冲区。
以下代码从上一个示例中创建的字节对象中检索未压缩的数据
>>> d = zlib.decompressobj() >>> x = d.decompress(s2) >>> x = x+d.flush() >>> x b'hello python'
zlib模块中定义了两个常量,它们提供了所使用的zlib库的版本信息。
>>> zlib.ZLIB_VERSION '1.2.11' >>> zlib.ZLIB_RUNTIME_VERSION '1.2.11'