0%

python gzip(zlib)

compress/decompress

我們有時會有想要壓縮資料及解壓縮資料的需求。
不論是什麼理由要進行壓縮,在python裡,我們可以使用到zlib。

今天讓我們來看看如何在 python 裡使用 zlib 進行壓縮。

zlib

zlib 是一個歷史悠久的工具,我們可能每天都在不知情的情況下使用到了這個工具帶來的結果。
在 python 裡 zlib 模組提供了 Zlib 壓縮的能力,而 Zlib 是由 GNU 專案的一部分。

compress

一般給定一個想要進行壓縮的 byte 字組,就會進行壓縮,回傳同樣是一組 byte 字組。
也可以追加一個 level(0-9) 的參數來指定壓縮的程度。0代表沒有壓縮,9代表最大的壓縮。
我們在進行解壓縮時再一起講範例吧。

decompress

相對於 compress 我們一定會需要 decompress 來進行反相的工作。

1
2
import zlib
c = zlib.compress(b'hello python')

c 的結果是 ‘x\x9c\xcbH\xcd\xc9\xc9W(\xa8,\xc9\xc8\xcf\x03\x00\x1e\xf0\x04\xd7’

1
x = zlib.decompress(c)

同樣的上面會得到原來的字串。
我們也可以用compressobj來進行壓縮。

1
2
3
4
s1 = b'hello python'
c = zlib.compressobj()
s2 = c.compress(s1)
s2 = s2+c.flush()

上面的 s2 會和前面的例子中的 c 有一樣的結果。

1
2
3
d = zlib.decompressobj()
x = d.decompress(s2)
x = x+d.flush()

上面的例子又同樣得到了 b’hello python’

1
print(zlib.ZLIB_VERSION)

在我的 mac 上python用的是 ‘1.2.11’