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

數據壓縮 | Data Compression bz2

Python開(kāi)發手冊

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

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

BZ2File類實現(xiàn)一個完整的文(wén)件接口,包括readline(),readlines(),writelines(),seek(),等;

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

BZ2File 類實現(xiàn)通用(yòng)換行支持;

BZ2File 類使用(yòng)從(cóng)文(wén)件對(duì)象借用(yòng)的readahead算(suàn)法提供優化的行叠代;

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

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

線程安全使用(yòng)單獨的鎖定機制。

1.(解壓縮)文(wén)件

處理(lǐ)壓縮文(wén)件是由BZ2File課程提供的。

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

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

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

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

注意

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

close()

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

read([size])

讀取大(dà)多數大(dà)小(xiǎo)的未壓縮字節,以字符串形式返回。如果size參數爲負值或省略,請(qǐng)閱讀,直到(dào)達到(dào)EOF。

readline([size])

從(cóng)文(wén)件中返回下(xià)一行,作(zuò)爲字符串保留換行符。非負大(dà)小(xiǎo)參數限制了(le)返回的最大(dà)字節數(然後可能(néng)會(huì)返回一個不完整的行)。在EOF處返回空(kōng)字符串。

readlines([size])

返回讀取的行列表。如果給出可選的大(dà)小(xiǎo)參數,則返回的行中的總字節數的近似範圍。

xreadlines()

爲了(le)向後兼容。BZ2File對(duì)象現(xiàn)在包含之前在xreadlines模塊中執行的性能(néng)優化。

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

seek(offset[, whence])

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

請(qǐng)注意,模拟尋找bz2文(wén)件,并根據參數操作(zuò)可能(néng)會(huì)非常緩慢。

tell()

返回當前文(wén)件的位置,一個整數(可能(néng)是一個長整數)。

write(data)

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

writelines(sequence_of_strings)

将字符串序列寫入文(wén)件。請(qǐng)注意,不添加換行符。該序列可以是任何可生成字符串的可叠代對(duì)象。這(zhè)相當于爲每個字符串調用(yòng)write()。

2.順序(反)壓縮

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

class bz2.BZ2Compressor([compresslevel])

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

compress(data)

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

flush()

完成壓縮過程并返回内部緩沖區(qū)中留下(xià)的内容。調用(yòng)此方法後,您不得使用(yòng)壓縮器對(duì)象。

class bz2.BZ2Decompressor

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

decompress(data)

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

3.一次壓縮

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

bz2.compress(data[, compresslevel])

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

bz2.decompress(data)

一次性解壓縮數據。如果要按順序解壓縮數據,請(qǐng)使用(yòng)BZ2Decompressor替代的實例。

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