該模塊為(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)發