lzma 模組



Lempel−Ziv−Markov 鏈演算法 (LZMA) 使用字典壓縮方案執行無損資料壓縮,該方案具有比其他壓縮演算法更高的壓縮率。Python 的 lzma 模組包含用於使用 LZMA 演算法壓縮和解壓縮資料的類和便捷函式。

儘管此模組中的功能類似於 bz2 模組的功能,但與 BZ2File 類相比,LZMAFile 類不是執行緒安全的。

同樣,lzma 模組中的 open() 函式是開啟 lzma 壓縮檔案物件的非常簡單的方法。

open() 函式

此函式開啟一個 LZMA 壓縮檔案並返回一個檔案物件。該函式需要兩個主要引數 - 檔名和模式。模式引數預設為“rb”,但可以採用以下任何值 -

二進位制模式 - "r"、"rb"、"w"、"wb"、"x"、"xb"、"a" 或 "ab"

文字模式 - "rt"、"wt"、"xt" 或 "at"

compress() 函式

此函式使用 LZMA 演算法壓縮給定的資料並返回一個位元組物件。此函式可以選擇性地具有一個格式引數,該引數決定容器格式。可能的值為 FORMAT_XZ(預設值)和 FORMAT_ALONE。

decompress() 函式

此函式解壓縮資料並返回未壓縮的位元組物件。

以上函式在以下示例中使用。要將 LZMA 壓縮資料寫入檔案 -

import lzma
data=b"Welcome to TutorialsPoint"
f=lzma.open("test.xz","wb")
f.write(data)
f.close()

將在當前工作目錄中建立一個“test.xz”檔案。要從該檔案獲取未壓縮的資料,請使用以下程式碼 -

import lzma
f=lzma.open("test.xz","rb")
data=f.read()
print (data)
b'Welcome to TutorialsPoint'

要使用 lzma 模組的面向物件 API 執行壓縮,我們必須使用 LZMAFile 類。

LZMAFile() 方法

這是 LZMAFile 類的建構函式。它要求指定檔案和模式。具有“w”或“wb”模式的物件使其可使用 write() 方法。

write() 方法

此方法壓縮給定的資料並將其寫入其下方的檔案。

data=b'Welcome to TutorialsPoint'
obj=lzma.LZMAFile("test.xz", mode="wb")
obj.write(data)
obj.close()

壓縮檔案被讀取,並且透過使用 mode='rb' 引數建立的 LZMAFile 物件的 read() 方法檢索未壓縮的資料。

read() 函式

此方法從壓縮檔案讀取資料並返回未壓縮的資料。

obj=lzma.LZMAFile("test.xz", mode="rb")
data=obj.read()
data
b'Welcome to TutorialsPoint'
python_data_compression.htm
廣告