Python 對 bzip2 壓縮 (bz2) 的支援


bzip2 是一種用於檔案壓縮和解壓縮的開源演算法。Python 的 bz2 模組提供了以程式設計方式實現 bzip2 演算法的功能。

open() 函式是此模組的主要介面。

Open()

此函式開啟一個 bzip2 壓縮檔案並返回一個檔案物件。該檔案可以以二進位制/文字模式開啟,並具有讀/寫許可權。該函式根據壓縮級別引數(1 到 9 之間)執行壓縮。

write()

當檔案以 'w' 或 'wb' 模式開啟時,此函式可用於檔案物件。在二進位制模式下,它將壓縮的二進位制資料寫入檔案。在普通文字模式下,檔案物件被包裝在 TetIOWrapper 物件中以執行編碼。

**read()** − 當以讀取模式開啟時,此函式讀取它並返回解壓縮的資料。

以下程式碼將壓縮資料寫入 bzip2 檔案。

>>> f = bz2.open("test.bz2", "wb")
>>> data = b'Welcome to TutorialsPoint'
>>> f.write(data)
>>> f.close()

這將在當前目錄中建立 test.bz2 檔案。任何解壓縮工具都將在其中顯示一個“test”檔案。要從該 test.bz2 檔案讀取解壓縮的資料,請使用以下程式碼。

>>> f = bz2.open("test.bz2", "rb")
>>> data=f.read()
>>> data
b'Welcome to TutorialsPoint'

bz2 模組還定義了 BZ2File 類。其物件充當壓縮器和解壓縮器,具體取決於建構函式對 mode 引數。

BZ2File()

這是建構函式。與 open() 函式一樣,需要 file 和 mode 引數。壓縮級別預設為 9,可以是 1 到 9 之間。

BZ2Compressor()

此函式返回增量壓縮器類的物件。對該類中 compress() 方法的每次呼叫都會返回一段壓縮資料。可以將多個塊連線在一起,最後寫入 bzip2 壓縮檔案。

flush()

此方法清空緩衝區並將其中的資料塊返回以附加到壓縮物件。

BZ2Decompressor()

此函式返回增量解壓縮器的物件。解壓縮資料的各個塊與已重新整理資料連線在一起,形成解壓縮資料。

以下示例首先壓縮列表物件中的每個專案,並將連線的位元組物件寫入檔案。資料由 BZ2Decompressor 物件檢索。

>>> data = [b'Hello World', b'How are you?', b'welcome to Python']
>>> obj = bz2.BZ2Compressor()
>>> f = bz2.open("test.bz2", "wb")
>>> d1 = obj.compress(data[0])
>>> d2 = obj.compress(data[1])
>>> d3 = obj.compress(data[2])
>>> d4 = obj.flush()
>>> d1,d2,d3,d4
(b'', b'', b'', b'BZh91AY&SYS\x9a~\x99\x00\x00\x03\x1f\x80@\x00\x00\x00\x80@@\x80.G\x96\xa0 \x00!\xa8\xd0\x06\x9a6\x90\xa6LL\x83#\x18\x1d\x83\xee^]\x1e|\xa9\xddgu\x15G/\x1a\x8c\xd1\x90\x14\x8f\x8b\xb9"\x9c(H)\xcd?L\x80')
>>> compressedobj=d1+d2+d3+d4
>>> f.write(compressedobj)
>>> f.close()
>>> obj=bz2.BZ2DeCompressor()
>>> f=bz2.open("test.bz2", "rb")
>>> data=f.read()
>>> obj.decompress(data)
b'Hello WorldHow are you?welcome to Python'

更新於: 2020-06-26

3K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告