12.3. bz2 — bzip2と互換性のある圧縮—Pythonドキュメント

提供:Dev Guides
< PythonPython/docs/2.7/library/bz2
移動先:案内検索

12.3。 bz2 —圧縮と互換性があります bzip2

バージョン2.3の新機能。


このモジュールは、bz2圧縮ライブラリの包括的なインターフェイスを提供します。 完全なファイルインターフェイス、ワンショット(解凍)圧縮関数、およびシーケンシャル(解凍)圧縮のタイプを実装します。

bz2モジュールが提供する機能の概要は次のとおりです。

ノート

マルチストリームbzip2ファイルの処理はサポートされていません。 bz2file などのモジュールを使用すると、これを克服できます。


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

圧縮ファイルの処理は、 BZ2File クラスによって提供されます。

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

bz2ファイルを開きます。 モードは、読み取り(デフォルト)または書き込み用に、'r'または'w'のいずれかになります。 書き込み用に開くと、ファイルが存在しない場合はファイルが作成され、存在しない場合は切り捨てられます。 バッファリングが指定されている場合、0はバッファリングされていないことを意味し、数値が大きいほどバッファサイズを指定します。 デフォルトは0です。 compresslevel を指定する場合は、1から9までの数値にする必要があります。 デフォルトは9です。 'U'をモードに追加して、ユニバーサルニューラインモードで入力用にファイルを開きます。 入力ファイルで終わる行は、Pythonでは'\n'と見なされます。 また、そのように開かれたファイルは、属性newlinesを取得します。 この属性の値は、None(改行はまだ読み取られていません)、'\r''\n''\r\n'、または表示されているすべての改行タイプを含むタプルのいずれかです。 。 ユニバーサルニューラインは、読んでいるときにのみ利用できます。 インスタンスは、通常の file インスタンスと同じ方法で反復をサポートします。

BZ2File は、 with ステートメントをサポートします。

バージョン2.7で変更: with ステートメントのサポートが追加されました。

ノート

このクラスは、複数のストリームを含む入力ファイル( pbzip2 ツールによって生成されたものなど)をサポートしていません。 このような入力ファイルを読み取る場合、最初のストリームのみにアクセスできます。 マルチストリームファイルのサポートが必要な場合は、サードパーティのbz2fileモジュール( PyPI から入手可能)の使用を検討してください。 このモジュールは、マルチストリームファイルをサポートするPython3.3の BZ2File クラスのバックポートを提供します。

close()

ファイルを閉じます。 データ属性closedをtrueに設定します。 閉じたファイルを以降のI / O操作に使用することはできません。 close()は、エラーなしで複数回呼び出される場合があります。

read([size])

最大でサイズの非圧縮バイトを読み取り、文字列として返されます。 size 引数が負であるか省略されている場合は、EOFに達するまで読み取ります。

readline([size])

ファイルから次の行を文字列として返し、改行を保持します。 負でない size 引数は、返す最大バイト数を制限します(不完全な行が返される場合があります)。 EOFで空の文字列を返します。

readlines([size])

読み取った行のリストを返します。 オプションの size 引数が指定されている場合、返される行の合計バイト数の概算の範囲です。

xreadlines()

下位互換性のため。 BZ2File オブジェクトには、xreadlinesモジュールで以前に実装されたパフォーマンスの最適化が含まれるようになりました。

バージョン2.3以降非推奨:これは、非推奨の file オブジェクトのこの名前のメソッドとの互換性のためにのみ存在します。 代わりにfor line in fileを使用してください。

seek(offset[, whence])

新しいファイルの位置に移動します。 引数 offset はバイトカウントです。 オプションの引数 whence のデフォルトはos.SEEK_SETまたは0(ファイルの先頭からのオフセット。オフセットは>= 0である必要があります)。 他の値は、os.SEEK_CURまたは1(現在の位置に対して移動します。オフセットは正または負にすることができます)、およびos.SEEK_ENDまたは2(終了に対して移動します)です。多くのプラットフォームではファイルの終わりを超えてシークすることができますが、オフセットは通常負です)。

bz2ファイルのシークはエミュレートされており、パラメーターによっては操作が非常に遅くなる場合があることに注意してください。

tell()

現在のファイル位置を整数(長整数の場合もあります)で返します。

write(data)

文字列データをファイルに書き込みます。 バッファリングのため、ディスク上のファイルが書き込まれたデータを反映する前に、 close()が必要になる場合があることに注意してください。

writelines(sequence_of_strings)

文字列のシーケンスをファイルに書き込みます。 改行は追加されないことに注意してください。 シーケンスは、文字列を生成する任意の反復可能なオブジェクトにすることができます。 これは、文字列ごとにwrite()を呼び出すのと同じです。


12.3.2。 シーケンシャル(解凍)圧縮

順次圧縮および解凍は、クラス BZ2Compressor および BZ2Decompressor を使用して実行されます。

class bz2.BZ2Compressor([compresslevel])

新しいコンプレッサーオブジェクトを作成します。 このオブジェクトは、データを順番に圧縮するために使用できます。 ワンショットでデータを圧縮したい場合は、代わりに compress()関数を使用してください。 compresslevel パラメーターを指定する場合は、1から9までの数値にする必要があります。 デフォルトは9です。

compress(data)

より多くのデータをコンプレッサーオブジェクトに提供します。 可能な限り、圧縮データのチャンクを返します。 圧縮するデータの提供が終了したら、 flush()メソッドを呼び出して圧縮プロセスを終了し、内部バッファーに残っているものを返します。

flush()

圧縮プロセスを終了し、内部バッファに残っているものを返します。 このメソッドを呼び出した後は、compressorオブジェクトを使用しないでください。

class bz2.BZ2Decompressor
新しいデコンプレッサオブジェクトを作成します。 このオブジェクトは、データを順番に解凍するために使用できます。 ワンショットでデータを解凍したい場合は、代わりに decompress()関数を使用してください。
decompress(data)
デコンプレッサオブジェクトにより多くのデータを提供します。 可能な限り、解凍されたデータのチャンクを返します。 ストリームの終わりが見つかった後にデータを解凍しようとすると、EOFErrorが発生します。 ストリームの終了後にデータが見つかった場合、そのデータは無視され、unused_data属性に保存されます。


12.3.3。 ワンショット(解凍)圧縮

ワンショット圧縮および解凍は、 compress()および decompress()関数を介して提供されます。

bz2.compress(data[, compresslevel])
データをワンショットで圧縮します。 データを順番に圧縮する場合は、代わりに BZ2Compressor のインスタンスを使用してください。 compresslevel パラメーターを指定する場合は、1から9までの数値にする必要があります。 デフォルトは9です。
bz2.decompress(data)
データをワンショットで解凍します。 データを順番に解凍する場合は、代わりに BZ2Decompressor のインスタンスを使用してください。