在 Python 中使用 Zlib 压缩和解压缩数据
本教程将讨论如何使用 Python 的 zlib
模块压缩和解压缩字节字符串。
在 Python 中使用 zlib.compress()
函数压缩数据
zlib
模块中的 compress(data, level=-1)
函数 压缩我们的字节数据并返回一个压缩的字节对象。它有两个参数,data
和 level
,其中 data
参数包含要压缩的数据,level
参数指定压缩级别。
level
参数值的范围从 0
到 9
。值 9
表示压缩量最大,速度最慢,值 1
表示压缩量最小,速度最快。
level
的默认值是 -1
,它控制压缩以提供压缩和速度之间的最佳折衷。
下面的代码片段演示了如何使用 Python 的 zlib.compress()
函数压缩字符串。
import zlib
s = b"This is a Byte String."
compressed = zlib.compress(s)
print("Compressed String:", compressed)
输出:
Compressed String: b'x\x9c\x0b\xc9\xc8,V\x00\xa2D\x05\xa7\xca\x92T\x85\xe0\x92\xa2\xcc\xbct=\x00VK\x07\x8f'
我们使用 zlib.compress(s)
函数压缩字符串 s
。我们在压缩之前将字符串转换为字节字符串,因为 zlib.compress()
函数仅压缩数据的字节。
使用 Python 中的 zlib.decompress()
函数解压缩数据
我们可以使用 zlib
模块中的 decompress(data, wbits=MAX_WBITS, bufsize=DEF_BUF_SIZE)
函数 来解压之前压缩过的字节数据中的字节,并返回一个解压后的字节对象。它需要三个参数; data
、wbits
和 bufsize
。
data
参数包含需要解压缩的压缩数据。
wbits
参数包含解压缩时历史缓冲区的大小。它的默认值是可用的最大历史缓冲区大小。
wbits
参数值在下表中详细讨论。
值 | 窗口大小 | 输入 |
---|---|---|
+8 至 +15 | 基数 2 | 必须包含 zlib 标头和 trailer |
-8 to -15 | 绝对值 | 必须不包含 zlib 标头和 trailer |
+24 到 +31 或 16 +(+8 到 +15) | 最低 4 位 | 必须包含 gzip 标头和 trailer |
+40 到 +47 或 32 +(+8 到 +15) | 最低 4 位 | zlib 或 gzip 格式 |
bufsize
参数指定初始缓冲区大小,如果需要更大的缓冲区大小,它会自动增加。我们在解压时并不总是需要定义 wbits
和 bufsize
参数。
以下代码片段演示了如何使用 Python 的 zlib.decompress()
函数解压缩先前压缩的数据。
decompressed = zlib.decompress(compressed)
print("\nDecompressed String:", decompressed)
输出:
Decompressed String: b'This is a Byte String.'
我们使用 zlib.decompress(compressed)
函数成功解压缩了先前压缩的字符串 compressed
。
Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.
LinkedIn