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

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

クラス `BZ2Compressor`( | [compresslevel])

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

`compress`( | data)

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

`flush`( | )

  圧縮処理を終え、内部バッファに残されているデータを返します。 このメソッドの呼び出し以降は同じ圧縮オブジェクトを使ってはなりません。

クラス `BZ2Decompressor`( | )

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

`decompress`( | data)

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