這(zhè)個模塊提供了(le)一(yī)個簡單的界面來壓縮和(hé)解壓縮文件,就像GNU程序gzip和(hé)gunzip一(yī)樣。
數(shù)據壓縮由zlib模塊提供。
該gzip模塊提供了(le)GzipFile在Python的文件對象之後建模的類。本GzipFile類讀取和(hé)寫入gzip的 -format文件,自(zì)動壓縮或解壓縮數(shù)據,使得它看(kàn)起來像一(yī)個普通(tōng)的文件對象。
請(qǐng)注意,該模塊不支持gzip和(hé)gunzip程序可(kě)以解壓縮的其他(tā)文件格式,例如(rú)壓縮和(hé)打包産生的文件格式。
該模塊定義了(le)以下(xià)項目:
class gzip.GzipFile([filename[, mode[, compresslevel[, fileobj[, mtime]]]]])
GzipFile該類的構造函數(shù),它模拟文件對象的大部分方法,但(dàn)readinto()和(hé)truncate()方法除外(wài)。至少(shǎo)fileobj和(hé)filename中的一(yī)個必須被賦予一(yī)個不平凡的值。
新的類實例基于fileobj,它可(kě)以是常規文件,StringIO對象或模拟文件的任何其他(tā)對象。它默認為(wèi)None,在這(zhè)種情況下(xià)打開(kāi)文件名以提供文件對象。
當fileobj不是時(shí)None,filename參數(shù)僅用于包含在gzip文件頭中,其中可(kě)能(néng)包含未壓縮文件的原始文件名。如(rú)果可(kě)辨别,它默認為(wèi)fileobj的文件名; 否則,它默認為(wèi)空字符串,在這(zhè)種情況下(xià),原始文件名不包含在标題中。
該模式參數(shù)可(kě)以是任意的'r','rb','a','ab','w',或者'wb',根據文件是否被讀取或寫入。如(rú)果可(kě)辨别,缺省值是fileobj的模式; 否則,默認是'rb'。如(rú)果沒有給出,'b'标志将被添加到模式以确保文件以二進制模式打開(kāi)以實現跨平台可(kě)移植性。
所述compresslevel參數(shù)是從(cóng)一(yī)個整數(shù)0,以9控制壓縮的水平; 1是最快(kuài)的并且産生最小的壓縮,并且9是最慢(màn)的并且産生最大的壓縮。0沒有壓縮。默認是9。
的修改時(shí)間(jiān)參數(shù)是壓縮時(shí)将被寫入到該流一(yī)個可(kě)選的數(shù)字時(shí)間(jiān)戳記。所有gzip壓縮流都(dōu)需要(yào)包含一(yī)個時(shí)間(jiān)戳。如(rú)果省略或None使用當前時(shí)間(jiān)。該模塊在解壓縮時(shí)忽略時(shí)間(jiān)戳; 然而,一(yī)些程序,比如(rú)gunzip,就是利用它。時(shí)間(jiān)戳的格式與返回的對象time.time()的st_mtime屬性的返回值和(hé)格式相同os.stat()。
調用GzipFile對象的close()方法不會關閉fileobj,因為(wèi)您可(kě)能(néng)希望在壓縮數(shù)據之後附加更多的材質。這(zhè)還允許您将StringIO打開(kāi)的對象作(zuò)為(wèi)fileobj傳遞,并使用StringIO對象的getvalue()方法檢索得到的內(nèi)存緩沖區(qū)。
GzipFile支持叠代和(hé)with聲明(míng)。
在版本2.7中進行(xíng)了(le)更改:with添加了(le)對語句的支持。
在版本2.7中進行(xíng)了(le)更改:添加了(le)對零填充文件的支持。
2.7版本中的新功能(néng):mtime參數(shù)。
gzip.open(filename[, mode[, compresslevel]])
這(zhè)是一(yī)個簡寫GzipFile(filename, mode, compresslevel)。該文件名參數(shù)是必需的; 模式默認為(wèi)'rb'并将默認壓縮級别設置為(wèi)9。
1.使用示例
如(rú)何讀取壓縮文件的示例:
import gzip
with gzip.open('file.txt.gz', 'rb') as f:
file_content = f.read()
複制
如(rú)何創建壓縮的GZIP文件的示例:
import gzip
content = "Lots of content here"
with gzip.open('file.txt.gz', 'wb') as f:
f.write(content)
複制
如(rú)何GZIP壓縮現有文件的示例:
import gzip
import shutil
with open('file.txt', 'rb') as f_in, gzip.open('file.txt.gz', 'wb') as f_out:
shutil.copyfileobj(f_in, f_out)
網站建設開(kāi)發|APP設計開(kāi)發|小程序建設開(kāi)發