在 Python 中使用 Zlib 压缩和解压缩数据

Muhammad Maisam Abbas 2023年1月30日 2022年5月18日
  1. 在 Python 中使用 zlib.compress() 函数压缩数据
  2. 使用 Python 中的 zlib.decompress() 函数解压缩数据
在 Python 中使用 Zlib 压缩和解压缩数据

本教程将讨论如何使用 Python 的 zlib 模块压缩和解压缩字节字符串。

在 Python 中使用 zlib.compress() 函数压缩数据

zlib 模块中的 compress(data, level=-1) 函数 压缩我们的字节数据并返回一个压缩的字节对象。它有两个参数,datalevel,其中 data 参数包含要压缩的数据,level 参数指定压缩级别。

level 参数值的范围从 09。值 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) 函数 来解压之前压缩过的字节数据中的字节,并返回一个解压后的字节对象。它需要三个参数; datawbitsbufsize

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 参数指定初始缓冲区大小,如果需要更大的缓冲区大小,它会自动增加。我们在解压时并不总是需要定义 wbitsbufsize 参数。

以下代码片段演示了如何使用 Python 的 zlib.decompress() 函数解压缩先前压缩的数据。

decompressed = zlib.decompress(compressed)
print("\nDecompressed String:", decompressed)

输出:

Decompressed String: b'This is a Byte String.'

我们使用 zlib.decompress(compressed) 函数成功解压缩了先前压缩的字符串 compressed

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

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

相关文章 - Python Zip