Python讀寫壓縮檔案的方法

2022-10-03 12:27:10 字數 1361 閱讀 4906

問題

你想讀寫乙個gzip或bz2格式的壓縮檔案。

解決方案

gzip和bz2模組可以很容易的處理這些檔案。 兩個模組都為open()函式提供了另外的實現來解決這個問題。 比如,為了以文字形式讀取壓縮檔案,可以這樣做:

# gzip compression

import gzip

with gzip.open('somefile.gz', 'rt') as f:

text = f.read()

# bz2 compression

import bz2

with bz2.open('somefile.bz2', 'rt') as f:

text = f.read()

類似的,為了寫入壓縮資料,可以這樣jpkicxctvz做:

# gzip compression

import gzip

wijpkicxctvzth gzip.open('somefile.gz', 'wt') as f:

f.write(text)

# bz2 compression

import bz2

with bz2.open('somefile.bz2', 'wt') as f:

f.write(text)

如上,所有的i/o操作都使用文字模式並執行unicode的編碼/解碼。 類似的,如果你想操作二進位制資料,使用rb或者wb檔案模式即可。

討論大部分情況下讀寫壓縮資料都是很簡單的。但是要注意的是選擇乙個正確的檔案模式是非常重要的。 如果你不指定模式,那麼預設的就是二進位制模式,如果這時候程式想要接受的是文字資料,那麼就會出錯。gzip.open()和bz2.open()接受跟內建的open()函式一樣的引數, 包括encoding,errors,newline等等。

當寫入壓縮資料時,可以使用compresslevel這個可選的關鍵字引數來指定乙個壓縮級別。比如:

with gzip.open('somefil程式設計客棧e.gz', 'wt', compresslevel=5) as f:

f.write(text)

預設的等級是9,也是最高的壓縮等級。等級越低效能越好,但是資料壓縮程度也越低。

最後一點,gzip.open()和bz2.open()還有乙個很少被知道的特性, 它們可以作用在乙個已存在並以二進位制模式開啟的檔案上。比如,下面**是可行的:

import gwww.cppcns.comzip

f = open('somefile.gz', 'rb')

with gzip.o程式設計客棧pen(f, 'rt') as g:

text = g.read()

這樣就允許gzip和bz2模組可以工作在許多類檔案物件上,比如套接字,管道和記憶體中檔案等。

python 讀寫壓縮檔案

gzip和bz2模組可以很容易的處理這些檔案。兩個模組都為open 函式提供了另外的實現來解決這個問題。比如,為了以文字形式讀取壓縮檔案,可以這樣做 gzip compression import gzip with gzip.open somefile.gz rt as f text f.read...

python 讀寫壓縮檔案

gzip 和bz2 模組可以很容易的處理這些檔案。兩個模組都為open 函式提供了另外的實現來解決這個問題。比如,為了以文字形式讀取壓縮檔案,可以這樣做 gzip compression import gzip with gzip.open somefile.gz rt as f text f.re...

Python讀寫zip壓縮檔案

python自帶模組zipfile可以完成zip壓縮檔案的讀寫,而且使用非常方便,下面我們就來演示一下python讀寫zip檔案。下面的 給出了用python讀取zip檔案,列印出壓縮檔案裡面所有的檔案,並讀取壓縮檔案中的第乙個檔案。import zipfile z zipfile zipfile ...