13.3. bz2 — bzip2圧縮のサポート—Pythonドキュメント

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

13.3。 bz2 - へのサポート bzip2 圧縮

ソースコード: :source: `Lib / bz2.py`



このモジュールは、bzip2圧縮アルゴリズムを使用してデータを圧縮および解凍するための包括的なインターフェースを提供します。

bz2 モジュールには次のものが含まれています。

このモジュールのすべてのクラスは、複数のスレッドから安全にアクセスできます。

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

bz2.open(filename, mode='r', compresslevel=9, encoding=None, errors=None, newline=None)

bzip2で圧縮されたファイルをバイナリモードまたはテキストモードで開き、ファイルオブジェクトを返します。

BZ2File のコンストラクターと同様に、 filename 引数は、実際のファイル名( str または bytes オブジェクト)または既存のファイル名にすることができます。読み取りまたは書き込みを行うファイルオブジェクト。

mode 引数には、'r''rb''w''wb''x''xb''a''ab'、または'rt''wt''xt'、 [X195X ]テキストモードの場合。 デフォルトは'rb'です。

compresslevel 引数は、 BZ2File コンストラクターと同様に、1から9までの整数です。

バイナリモードの場合、この関数は BZ2File コンストラクターBZ2File(filename, mode, compresslevel=compresslevel)と同等です。 この場合、 encodingerrors 、および newline 引数を指定しないでください。

テキストモードの場合、 BZ2File オブジェクトが作成され、指定されたエンコーディング、エラー処理動作、および行末で io.TextIOWrapper インスタンスにラップされます。

バージョン3.3の新機能。

バージョン3.4で変更: 'x'(排他的作成)モードが追加されました。

バージョン3.6で変更: パスのようなオブジェクトを受け入れます。

class bz2.BZ2File(filename, mode='r', buffering=None, compresslevel=9)

bzip2で圧縮されたファイルをバイナリモードで開きます。

filenamestr または bytes オブジェクトの場合は、指定されたファイルを直接開きます。 それ以外の場合、ファイル名ファイルオブジェクトである必要があります。これは、圧縮データの読み取りまたは書き込みに使用されます。

mode 引数は、読み取り用の'r'(デフォルト)、上書き用の'w'、排他的作成用の'x'、または'a'のいずれかです。追加用。 これらは、それぞれ'rb''wb''xb'、および'ab'と同等に指定できます。

filename が(実際のファイル名ではなく)ファイルオブジェクトである場合、'w'のモードはファイルを切り捨てず、代わりに'a'と同等です。

buffering 引数は無視されます。 その使用は非推奨です。

mode'w'または'a'の場合、 compresslevel19の間の数値で、圧縮レベル:1は最小の圧縮を生成し、9(デフォルト)は最大の圧縮を生成します。

mode'r'の場合、入力ファイルは複数の圧縮ストリームを連結したものである可能性があります。

BZ2File は、detach()truncate()を除き、 io.BufferedIOBase で指定されたすべてのメンバーを提供します。 反復と with ステートメントがサポートされています。

BZ2File は、次のメソッドも提供します。

peek([n])

ファイルの位置を進めずに、バッファリングされたデータを返します。 少なくとも1バイトのデータが返されます(EOFの場合を除く)。 返される正確なバイト数は指定されていません。

ノート

peek()を呼び出しても、 BZ2File のファイル位置は変更されませんが、基になるファイルオブジェクトの位置は変更される可能性があります(例: BZ2Filefilename のファイルオブジェクトを渡すことによって構築された場合)。

バージョン3.3の新機能。

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

バージョン3.3で変更: fileno()readable()seekable()writable()read1()readinto()メソッドが追加されました。

バージョン3.3で変更:実際のファイル名ではなくファイルオブジェクトであるファイル名のサポートが追加されました。

バージョン3.3で変更: 'a'(追加)モードが追加され、マルチストリームファイルの読み取りがサポートされました。

バージョン3.4で変更: 'x'(排他的作成)モードが追加されました。

バージョン3.5で変更: read()メソッドは、Noneの引数を受け入れるようになりました。

バージョン3.6で変更: パスのようなオブジェクトを受け入れます。


13.3.2。 インクリメンタル(解凍)圧縮

class bz2.BZ2Compressor(compresslevel=9)

新しいコンプレッサーオブジェクトを作成します。 このオブジェクトは、データを段階的に圧縮するために使用できます。 ワンショット圧縮の場合は、代わりに compress()関数を使用してください。

compresslevel を指定する場合は、1から9までの数値にする必要があります。 デフォルトは9です。

compress(data)

コンプレッサーオブジェクトにデータを提供します。 可能であれば圧縮データのチャンクを返し、そうでない場合は空のバイト文字列を返します。

コンプレッサーへのデータの提供が終了したら、 flush()メソッドを呼び出して圧縮プロセスを終了します。

flush()

圧縮プロセスを終了します。 内部バッファに残っている圧縮データを返します。

このメソッドが呼び出された後は、コンプレッサーオブジェクトを使用できません。

class bz2.BZ2Decompressor

新しいデコンプレッサオブジェクトを作成します。 このオブジェクトは、データを段階的に解凍するために使用できます。 ワンショット圧縮の場合は、代わりに decompress()関数を使用してください。

ノート

このクラスは、 decompress()BZ2File とは異なり、複数の圧縮ストリームを含む入力を透過的に処理しません。 BZ2Decompressor を使用してマルチストリーム入力を解凍する必要がある場合は、ストリームごとに新しい解凍ツールを使用する必要があります。

decompress(data, max_length=- 1)

databytes-like object )を解凍し、圧縮されていないデータをバイトとして返します。 データの一部は、後で decompress()を呼び出すときに使用するために、内部でバッファリングされる場合があります。 返されるデータは、 decompress()への以前の呼び出しの出力と連結する必要があります。

max_length が負でない場合、最大で max_length バイトの解凍されたデータを返します。 この制限に達してさらに出力を生成できる場合、 needs_input 属性はFalseに設定されます。 この場合、 decompress()を次に呼び出すと、 databとして提供され、より多くの出力が取得される場合があります。

すべての入力データが解凍されて返された場合(これが max_length バイト未満であったか、 max_length が負であったため)、 needs_input 属性は次のようになります。 Trueに設定します。

ストリームの終わりに達した後にデータを解凍しようとすると、 EOFError が発生します。 ストリームの終了後に見つかったデータはすべて無視され、 unused_data 属性に保存されます。

バージョン3.5で変更: max_length パラメーターが追加されました。

eof

Trueストリームの終わりマーカーに達した場合。

バージョン3.3の新機能。

unused_data

圧縮ストリームの終了後に見つかったデータ。

ストリームの終わりに達する前にこの属性にアクセスすると、その値はbになります。

needs_input

False decompress()メソッドが、新しい非圧縮入力を必要とする前に、より多くの解凍データを提供できる場合。

バージョン3.5の新機能。


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

bz2.compress(data, compresslevel=9)

データを圧縮します。

compresslevel を指定する場合は、1から9までの数値にする必要があります。 デフォルトは9です。

インクリメンタル圧縮の場合は、代わりに BZ2Compressor を使用してください。

bz2.decompress(data)

データを解凍します。

data が複数の圧縮ストリームの連結である場合は、すべてのストリームを解凍します。

増分解凍の場合は、代わりに BZ2Decompressor を使用してください。

バージョン3.3で変更:マルチストリーム入力のサポートが追加されました。