Python 中與 gzip 相容的壓縮(zlib)
zlib 模組提供了 Python 對 Zlib 壓縮庫 (http://www.zlib.net) 的實現,它是 GNU 專案的一部分。
本文討論了 zlib 模組中定義的重要函式。
compress()
此函式與 decompress() 函式一起是此模組的主要介面。此函式透過壓縮作為引數給定的資料來返回位元組物件。該函式還有另一個名為 level 的引數,它控制壓縮程度。它是一個介於 0 到 9 之間的整數。最低值 0 表示不壓縮,9 表示最佳壓縮。壓縮級別越高,壓縮後的位元組物件長度越長。
decompress()
此函式執行與 compress() 函式相反的操作。它檢索未壓縮的資料。此函式可以有一個可選引數,稱為 wbits,它控制歷史緩衝區的大小以及標題和尾部格式的性質。
以下語句使用 compress() 函式壓縮字串物件
>>> import zlib >>> c = zlib.compress(b'hello python') >>> c b'x\x9c\xcbH\xcd\xc9\xc9W(\xa8,\xc9\xc8\xcf\x03\x00\x1e\xf0\x04\xd7'
而 decompress() 函式檢索原始 Python 字串。
>>> zlib.decompress(c) b'hello python'
該模組包含定義了兩個相應的壓縮和解壓縮物件類。
compressobj() - 此建構函式返回用於壓縮資料流的壓縮物件。此物件的兩個重要方法是
compress() - 返回壓縮後的位元組物件。
flush() - 由於壓縮物件處理的是流,因此緩衝區中可能仍有一些壓縮資料。此方法清空緩衝區。
以下示例設定壓縮物件並透過將重新整理後的資料新增到 compress() 方法的返回值來構造壓縮資料物件。
>>> s1 = b'hello python' >>> c = zlib.compressobj() >>> s2 = c.compress(s1) >>> s2 = s2+c.flush() >>> s2 b'x\x9c\xcbH\xcd\xc9\xc9W(\xa8,\xc9\xc8\xcf\x03\x00\x1e\xf0\x04\xd7'
decompressobj() - 此方法充當解壓縮物件的建構函式,該物件從流中解壓縮大量資料。此物件提供以下方法
decompress() - 此方法返回未壓縮的資料
flush() - 此方法清空緩衝區。
以下程式碼從上一個示例中建立的位元組物件中檢索未壓縮的資料
>>> d = zlib.decompressobj() >>> x = d.decompress(s2) >>> x = x+d.flush() >>> x b'hello python'
zlib 模組中定義了兩個常量,它們提供正在使用的 zlib 庫的版本資訊。
>>> zlib.ZLIB_VERSION '1.2.11' >>> zlib.ZLIB_RUNTIME_VERSION '1.2.11'
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP