做(zuò)自(zì)由與創造的先行(xíng)者

數(shù)據壓縮 | Data Compression bz2

Python開(kāi)發手冊

該模塊為(wèi)bz2壓縮庫提供了(le)一(yī)個全面的界面。它實現了(le)一(yī)個完整的文件接口,一(yī)次性(解除)壓縮功能(néng),以及用于順序(反)壓縮的類型。

以下(xià)是bz2模塊提供的功能(néng)摘要(yào):

BZ2File類實現一(yī)個完整的文件接口,包括readline(),readlines(),writelines(),seek(),等;

BZ2File類實現模拟seek()支持;

BZ2File 類實現通(tōng)用換行(xíng)支持;

BZ2File 類使用從(cóng)文件對象借用的readahead算法提供優化的行(xíng)叠代;

由BZ2Compressor和(hé)BZ2Decompressor類支持的順序(反)壓縮;

由compress()和(hé)decompress()功能(néng)支持的一(yī)次性(去)壓縮;

線程安全使用單獨的鎖定機制。

1.(解壓縮)文件

處理壓縮文件是由BZ2File課程提供的。

class bz2.BZ2File(filename[, mode[, buffering[, compresslevel]]])

打開(kāi)一(yī)個bz2文件。模式可(kě)以是'r'或者'w',用于閱讀(默認)或寫作(zuò)。當打開(kāi)寫入時(shí),如(rú)果該文件不存在,則該文件将被創建,否則将被截斷。如(rú)果給出緩沖,0意味着無緩沖,而較大的數(shù)字指定緩沖區(qū)大小; 默認是0。如(rú)果給出了(le)壓縮級别,它必須是介于1和(hé)之間(jiān)的數(shù)字9; 默認是9。添加'U'到模式以通(tōng)用換行(xíng)模式打開(kāi)文件進行(xíng)輸入。任何以輸入文件結尾的行(xíng)将被視(shì)為(wèi)'\n'Python中的行(xíng)。另外(wài),如(rú)此打開(kāi)的文件将獲得該屬性newlines; 該屬性的值是一(yī)個None(沒有新行(xíng)讀還), ,,'\r''\n''\r\n'或者包含所有可(kě)見(jiàn)的新行(xíng)類型的元組。通(tōng)用換行(xíng)符僅在閱讀時(shí)可(kě)用。實例以與正常file實例相同的方式支持叠代。

BZ2File支持該with聲明(míng)。

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

注意

該類不支持包含多個流的輸入文件(例如(rú)由pbzip2工(gōng)具生成的文件)。當讀取這(zhè)樣的輸入文件時(shí),隻有第一(yī)個流将被訪問(wèn)。如(rú)果您需要(yào)支持多流文件,請(qǐng)考慮使用第三方bz2file模塊(可(kě)從(cóng)PyPI獲得)。這(zhè)個模塊提供了(le)Python 3.3的BZ2File類的後端,它支持多流文件。

close()

關閉文件。将數(shù)據屬性設置closed為(wèi)true。封閉的文件不能(néng)用于進一(yī)步的I / O操作(zuò)。close()可(kě)能(néng)會不止一(yī)次地(dì)被調用。

read([size])

讀取大多數(shù)大小的未壓縮字節,以字符串形式返回。如(rú)果size參數(shù)為(wèi)負值或省略,請(qǐng)閱讀,直到達到EOF。

readline([size])

從(cóng)文件中返回下(xià)一(yī)行(xíng),作(zuò)為(wèi)字符串保留換行(xíng)符。非負大小參數(shù)限制了(le)返回的最大字節數(shù)(然後可(kě)能(néng)會返回一(yī)個不完整的行(xíng))。在EOF處返回空字符串。

readlines([size])

返回讀取的行(xíng)列表。如(rú)果給出可(kě)選的大小參數(shù),則返回的行(xíng)中的總字節數(shù)的近似範圍。

xreadlines()

為(wèi)了(le)向後兼容。BZ2File對象現在包含之前在xreadlines模塊中執行(xíng)的性能(néng)優化。

自(zì)從(cóng)版本2.3開(kāi)始不推薦使用:這(zhè)僅适用于與file對象上(shàng)的此名稱的方法的兼容性,不建議(yì)使用此名稱。for line in file改為(wèi)使用。

seek(offset[, whence])

移動到新的文件位置。參數(shù)偏移量是一(yī)個字節數(shù)。可(kě)選參數(shù)whence缺省為(wèi)os.SEEK_SET或0(從(cóng)文件起始位置偏移; offset應該是>= 0); 其它值os.SEEK_CUR或1(移動相對于當前位置;偏移可(kě)為(wèi)正或負),和(hé)os.SEEK_END或2(相對移動到文件結尾的;偏移通(tōng)常是負的,雖然許多平台允許尋求超出文件的結尾)。

請(qǐng)注意,模拟尋找bz2文件,并根據參數(shù)操作(zuò)可(kě)能(néng)會非常緩慢(màn)。

tell()

返回當前文件的位置,一(yī)個整數(shù)(可(kě)能(néng)是一(yī)個長(cháng)整數(shù))。

write(data)

将字符串數(shù)據寫入文件。請(qǐng)注意,由于緩沖,close()可(kě)能(néng)需要(yào)在磁盤上(shàng)的文件反映寫入的數(shù)據之前。

writelines(sequence_of_strings)

将字符串序列寫入文件。請(qǐng)注意,不添加換行(xíng)符。該序列可(kě)以是任何可(kě)生成字符串的可(kě)叠代對象。這(zhè)相當于為(wèi)每個字符串調用write()。

2.順序(反)壓縮

順序壓縮和(hé)解壓縮使用類BZ2Compressor和(hé)BZ2Decompressor。

class bz2.BZ2Compressor([compresslevel])

創建一(yī)個新的壓縮機對象。這(zhè)個對象可(kě)以用來順序壓縮數(shù)據。如(rú)果您想一(yī)次壓縮數(shù)據,請(qǐng)改用該compress()功能(néng)。的compresslevel參數(shù),如(rú)果給定的,必須之間(jiān)的數(shù)字1和(hé)9; 默認是9。

compress(data)

向壓縮機對象提供更多數(shù)據。它會盡可(kě)能(néng)地(dì)返回壓縮數(shù)據塊。當您完成提供數(shù)據壓縮時(shí),調用該flush()方法來完成壓縮過程,并返回內(nèi)部緩沖區(qū)中留下(xià)的內(nèi)容。

flush()

完成壓縮過程并返回內(nèi)部緩沖區(qū)中留下(xià)的內(nèi)容。調用此方法後,您不得使用壓縮器對象。

class bz2.BZ2Decompressor

創建一(yī)個新的解壓縮器對象。該對象可(kě)用于順序解壓縮數(shù)據。如(rú)果您想一(yī)次性解壓縮數(shù)據,請(qǐng)改用該decompress()功能(néng)。

decompress(data)

向解壓縮器對象提供更多數(shù)據。它會盡可(kě)能(néng)地(dì)返回大量的解壓縮數(shù)據。如(rú)果您在找到流結束後嘗試解壓縮數(shù)據,EOFError将會被提升。如(rú)果在數(shù)據流結束後發現任何數(shù)據,它将被忽略并保存在unused_data屬性中。

3.一(yī)次壓縮

通(tōng)過compress()和(hé)decompress()功能(néng)提供一(yī)次性壓縮和(hé)解壓縮。

bz2.compress(data[, compresslevel])

一(yī)次壓縮數(shù)據。如(rú)果要(yào)按順序壓縮數(shù)據,請(qǐng)使用BZ2Compressor替代的實例。的compresslevel參數(shù),如(rú)果給定的,必須之間(jiān)的數(shù)字1和(hé)9; 默認是9。

bz2.decompress(data)

一(yī)次性解壓縮數(shù)據。如(rú)果要(yào)按順序解壓縮數(shù)據,請(qǐng)使用BZ2Decompressor替代的實例。

網站建設開(kāi)發|APP設計開(kāi)發|小程序建設開(kāi)發
下(xià)一(yī)篇:數(shù)據壓縮 | Data Compression gzip
上(shàng)一(yī)篇:Types: 13. Special Attributes