在 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