12.3.1 ファイルの圧縮(解凍)

BZ2File クラスは圧縮ファイルの操作機能を提供しています。

クラス BZ2File( filename[, mode[, buffering[, compresslevel]]])
bz2 ファイルを開きます。ファイルのモードは 'r' または 'w' で、それぞれ読み出しと書き込みに対応します。 書き出し用に開いた場合、ファイルが存在しないなら新しく作成し、 そうでない場合ファイルを切り詰ます。 buffering パラメタを与えた場合、0 はバッファリング なしを表し、それよりも大きい値はバッファサイズになります。 デフォルトでは 0 です。圧縮レベルcompresslevel を与える場合、値は 1 から 9 までの整数値でなければ なりません。デフォルトの値は 9 です。 ファイルへの入力に広範囲の改行文字バリエーションをサポートさせたい 場合は "U" をファイルモードに追加します。 入力ファイルの行末はどれも、Pythonからは "\n" として見えます。 また、また、開かれているファイルオブジェクトは newlines 属性 を持ち、None (まだ改行文字を読み込んでいない時), '\r', '\n', '\r\n' または全ての改行文字バリエーション を含むタプルになります。広範囲の改行文字サポートが利用できるのは 読み込みだけです。BZ2File が生成するインスタンスは通常の ファイルインスタンスと同様のイテレーション操作をサポートしています。

close( )
ファイルを閉じます。オブジェクトのデータ属性 closed を真に します。閉じたファイルはそれ以後入出力操作の対象にできません。 close() 自体の呼び出しはエラーを引き起こすことなく何度も 実行できます。

read( [size])
最大で size バイトの解凍されたデータを読み出し、文字列として 返します。size 引数を負の値にした場合や省略した場合、EOF に たどり着くまで読み出します。

readline( [size])
ファイルから次の 1 行を読み出し、改行文字も含めて文字列を返します。 負でない size 値は、返される文字列の最大バイト長を制限します (その場合不完全な行を返すこともあります)。 EOF の時には空文字列 を返します。

readlines( [size])
ファイルから読み取った各行の文字列からなるリストを返します。 オプション引数 size を与えた場合、文字列リストの 合計バイト長の大まかな上限の指定になります。

xreadlines( )
前のバージョンとの互換性のために用意されています。 BZ2File オブジェクトはかつて xreadlines モジュールで提供されて いたパフォーマンス最適化を含んでいます。
リリース 2.3 で撤廃されました。 このメソッドは file オブジェクトの同名の メソッドとの互換性のために用意されていますが、現在は推奨されない メソッドです。代りに for line in file を使ってください。

seek( offset[, whence])
ファイルの読み書き位置を移動します。 引数 offset はバイト数で 指定したオフセット値です。 オプション引数 whence はデフォルトで 0 (ファイルの 先頭からのオフセットで、offset >= 0 になるはず) です。 他にとり得る値は 1 (現在のファイル位置からの相対位置で、正負 どちらの値もとり得る)、および 2 (ファイルの終末端からの相対位置で、 通常は負の値になるが、多くのプラットフォームではファイルの終末端を 越えて seek できる) です。

bz2 ファイルの seek はエミュレーションであり、パラメタの設定によっては 処理が非常に低速になるかもしれないので注意してください。

tell( )
現在のファイル位置を整数(long 整数になるかもしれません)で返します。

write( data)
ファイルに文字列 data を書き込みます。バッファリングのため、 ディスク上のファイルに書き込まれたデータを反映させるには close() が必要になるかもしれないので注意してください。

writelines( sequence_of_strings)
複数の文字列からなるシーケンスをファイルに書き込みます。それぞれの 文字列を書き込む際に改行文字を追加することはありません。 シーケンスはイテレーション処理で文字列を取り出せる任意のオブジェクトに できます。この操作はそれぞれの文字列を write() を呼んで 書き込むのと同じ操作です。

ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。