12.3。 bz2 —圧縮と互換性があります bzip2
バージョン2.3の新機能。
このモジュールは、bz2圧縮ライブラリの包括的なインターフェイスを提供します。 完全なファイルインターフェイス、ワンショット(解凍)圧縮関数、およびシーケンシャル(解凍)圧縮のタイプを実装します。
bz2モジュールが提供する機能の概要は次のとおりです。
- BZ2File クラスは、 readline()、 readlines()、 writelines()、 seek( )など;
- BZ2File クラスは、エミュレートされた seek()サポートを実装します。
- BZ2File クラスは、ユニバーサル改行サポートを実装します。
- BZ2File クラスは、ファイルオブジェクトから借用した先読みアルゴリズムを使用して、最適化された行の反復を提供します。
- BZ2Compressor および BZ2Decompressor クラスでサポートされる順次(解凍)圧縮。
- compress()および decompress()関数でサポートされるワンショット(解凍)圧縮。
- スレッドセーフは個別のロック機構を使用しています。
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 のインスタンスを使用してください。