## 7.17.2 逐次的な圧縮（解凍）

逐次的な圧縮および解凍は `BZ2Compressor` および `BZ2Decompressor` クラスを用いて行われます。

class `BZ2Compressor`( | [compresslevel])

  新しい圧縮オブジェクトを作成します。このオブジェクトはデータを逐次的に 圧縮できます。一括してデータを圧縮したいのなら、`compress()` 関数を代りに使ってください。compresslevel パラメタを与える場合、 この値は `1` and `9` の間の整数でなければなりません。 デフォルトの値は `9` です。

`compress`( | data)

  圧縮オブジェクトに追加のデータを入力します。データが圧縮された チャンクを生成することができた場合にはチャンクを返します。 圧縮データの入力を終えた後は 圧縮処理を終えるために `flush()` を呼んでください。 内部バッファに残っている未処理のデータが返されます。

`flush`( | )

  圧縮処理を終え、内部バッファに残されているデータを返します。 メソッドを呼んだ後は、この圧縮オブジェクトを使うべきではありません。

class `BZ2Decompressor`( | )

  新しい解凍オブジェクトを生成します。このオブジェクトは逐次的にデータ を解凍できます。一括してデータを解凍したいのなら、 `decompress()` 関数を代りに使ってください。

`decompress`( | data)

  解凍オブジェクトに追加のデータを入力します。可能な限り、データが 解凍されたチャンクを生成することができた場合にはチャンクを 返します。ストリームの末端に到達した後に解凍処理を行おうと した場合には、例外 `EOFError` が送出されます。 ストリームの終末端の後ろに何らかのデータがあった場合には、解凍 操作からは無視され、このデータはオブジェクトの `unused_data` 属性に収められます。