做自(zì)由與創造的先行者

數據壓縮 | Data Compression gzip

Python開(kāi)發手冊

這(zhè)個模塊提供了(le)一個簡單的界面來(lái)壓縮和(hé)解壓縮文(wén)件,就像GNU程序gzip和(hé)gunzip一樣。

數據壓縮由zlib模塊提供。

該gzip模塊提供了(le)GzipFile在Python的文(wén)件對(duì)象之後建模的類。本GzipFile類讀取和(hé)寫入gzip的 -format文(wén)件,自(zì)動壓縮或解壓縮數據,使得它看(kàn)起來(lái)像一個普通的文(wén)件對(duì)象。

請(qǐng)注意,該模塊不支持gzip和(hé)gunzip程序可以解壓縮的其他(tā)文(wén)件格式,例如壓縮和(hé)打包産生的文(wén)件格式。

該模塊定義了(le)以下(xià)項目:

class gzip.GzipFile([filename[, mode[, compresslevel[, fileobj[, mtime]]]]])

GzipFile該類的構造函數,它模拟文(wén)件對(duì)象的大(dà)部分方法,但(dàn)readinto()和(hé)truncate()方法除外(wài)。至少fileobj和(hé)filename中的一個必須被賦予一個不平凡的值。

新的類實例基于fileobj,它可以是常規文(wén)件,StringIO對(duì)象或模拟文(wén)件的任何其他(tā)對(duì)象。它默認爲None,在這(zhè)種情況下(xià)打開(kāi)文(wén)件名以提供文(wén)件對(duì)象。

當fileobj不是時(shí)None,filename參數僅用(yòng)于包含在gzip文(wén)件頭中,其中可能(néng)包含未壓縮文(wén)件的原始文(wén)件名。如果可辨别,它默認爲fileobj的文(wén)件名; 否則,它默認爲空(kōng)字符串,在這(zhè)種情況下(xià),原始文(wén)件名不包含在标題中。

該模式參數可以是任意的'r','rb','a','ab','w',或者'wb',根據文(wén)件是否被讀取或寫入。如果可辨别,缺省值是fileobj的模式; 否則,默認是'rb'。如果沒有給出,'b'标志将被添加到(dào)模式以确保文(wén)件以二進制模式打開(kāi)以實現(xiàn)跨平台可移植性。

所述compresslevel參數是從(cóng)一個整數0,以9控制壓縮的水(shuǐ)平; 1是最快(kuài)的并且産生最小(xiǎo)的壓縮,并且9是最慢的并且産生最大(dà)的壓縮。0沒有壓縮。默認是9。

的修改時(shí)間參數是壓縮時(shí)将被寫入到(dào)該流一個可選的數字時(shí)間戳記。所有gzip壓縮流都需要包含一個時(shí)間戳。如果省略或None使用(yòng)當前時(shí)間。該模塊在解壓縮時(shí)忽略時(shí)間戳; 然而,一些(xiē)程序,比如gunzip,就是利用(yòng)它。時(shí)間戳的格式與返回的對(duì)象time.time()的st_mtime屬性的返回值和(hé)格式相同os.stat()。

調用(yòng)GzipFile對(duì)象的close()方法不會(huì)關閉fileobj,因爲您可能(néng)希望在壓縮數據之後附加更多的材質。這(zhè)還允許您将StringIO打開(kāi)的對(duì)象作(zuò)爲fileobj傳遞,并使用(yòng)StringIO對(duì)象的getvalue()方法檢索得到(dào)的内存緩沖區(qū)。

GzipFile支持叠代和(hé)with聲明(míng)。

在版本2.7中進行了(le)更改:with添加了(le)對(duì)語句的支持。

在版本2.7中進行了(le)更改:添加了(le)對(duì)零填充文(wén)件的支持。

2.7版本中的新功能(néng):mtime參數。

gzip.open(filename[, mode[, compresslevel]])

這(zhè)是一個簡寫GzipFile(filename, mode, compresslevel)。該文(wén)件名參數是必需的; 模式默認爲'rb'并将默認壓縮級别設置爲9。

1.使用(yòng)示例

如何讀取壓縮文(wén)件的示例:

import gzip

with gzip.open('file.txt.gz', 'rb') as f:

file_content = f.read()

複制

如何創建壓縮的GZIP文(wén)件的示例:

import gzip

content = "Lots of content here"

with gzip.open('file.txt.gz', 'wb') as f:

f.write(content)

複制

如何GZIP壓縮現(xiàn)有文(wén)件的示例:

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)

網站(zhàn)建設開(kāi)發|APP設計(jì)開(kāi)發|小(xiǎo)程序建設開(kāi)發
下(xià)一篇:數據壓縮 | Data Compression tarfile
上(shàng)一篇:數據壓縮 | Data Compression bz2