###
5 StreamReader オブジェクト

`StreamReader` クラスは `Codec` のサブクラスで、以下のメソッ ドを定義しています。全てのストリームリーダは、Python の codec レジス トリとの互換性を保つために、これらのメソッドを定義する必要があります。

クラス `StreamReader`( | stream[, errors])

  `StreamReader` インスタンスのコンストラクタです。

  全てのストリームリーダはコンストラクタとしてこのインタフェースを提供 せねばなりません。キーワード引数を追加しても構いませんが、 Python の codec レジストリはここで定義されている引数だけを使います。

  stream は、(バイナリで) 読み出し可能なファイル類似のオブジェクト でなくてはなりません。

  `StreamReader` は、errors キーワード引数を受けて、異なった エラー処理の仕組みを実装しても構いません。定義済みのパラメタを以下に 示します。

  - `'strict'` `ValueError` (または、そのサブクラス) を送出します。デフォルトの処理です。
  - `'ignore'` 文字を無視して、次の文字から続けます。
  - `'replace'` 適切な置換文字で置換します。

  errors 引数は、同名の属性に代入されます。この属性を変更すると、 `StreamReader` オブジェクトが生きている間に、異なるエラー処理に 変更できます。

  errors 引数が取りえる値の種類は`register_error()` で 拡張できます。

`read`( | [size[, chars, [firstline]]])

  ストリームからのデータをデコードし、デコード済のオブジェクトを返しま す。

  chars はストリームから読み込む文字数です。 `read()` はchars以上の文字を返しませんが、それより少 ない文字しか取得できない場合にはchars以下の文字を返します。

  size は、デコードするためにストリームから読み込む、およその最大バ イト数を意味します。デコーダはこの値を適切な値に変更できます。 デフォルト値 -1 にすると可能な限りたくさんのデータを読み込みます。 size の目的は、巨大なファイルの一括デコードを防ぐことにあります。

  firstline は、1行目さえ返せばその後の行でデコードエラーがあっても 無視して十分だ、ということを示します。

  このメソッドは貪欲な読み込み戦略を取るべきです。すなわち、エンコーディ ング定義と size の値が許す範囲で、できるだけ多くのデータを読むべきだと いうことです。たとえば、ストリーム上にエンコーディングの終端や状態の目 印があれば、それも読み込みます。 バージョン 2.4 で 変更 された仕様: 引数chars が追加されました。 バージョン 2.4.2 で 変更 された仕様: 引数firstline が追加されました。

`readline`( | [size[, keepends]])

  入力ストリームから1行読み込み、デコード済みのデータを返します。

  size が与えられた場合、ストリームにおける `readline()` の size 引数に渡されます。

  keepends が偽の場合には行末の改行が削除された行が返ります。

  バージョン 2.4 で 変更 された仕様: 引数keependsが追加されました。

`readlines`( | [sizehint[, keepends]])

  入力ストリームから全ての行を読み込み、行のリストとして返します。

  keependsが真なら、改行は、codec のデコーダメソッドを使って実装され、 リスト要素の中に含まれます。

  sizehint が与えられた場合、 ストリームの `read()` メソッ ドに size 引数として渡されます。

`reset`( | )

  状態保持に使われた codec のバッファをリセットします。

  ストリームの読み位置を再設定してはならないので注意してください。 このメソッドはデコードの際にエラーから復帰できるようにするためのものです。

ここまでで挙げたメソッドの他にも、`StreamReader` では背後にある ストリームの他の全てのメソッドや属性を継承せねばなりません。

次に挙げる2つの基底クラスは、利便性のために含まれています。codec レジスト リは、これらを必要としませんが、実際のところ、あると有用なものでしょう。