在 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