在 Python 中使用 Zlib 壓縮和解壓縮資料

Muhammad Maisam Abbas 2023年1月30日
  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