peek()
メソッドを使用して先読みしたいが、ファイルのようなオブジェクトを期待する別のメソッドでストリームを使用したいので、バッファリングされたストリームを使用したい。(私は使用しますseek()
が、ランダム アクセスをサポートしないパイプイン I/O を処理する必要がある場合があります。)
しかし、このテスト ケースは失敗します。
AttributeError: 'file' オブジェクトに属性 '_checkReadable' がありません
import sys
import io
srcfile = sys.argv[1]
with open(srcfile, 'rb') as f:
fbuf = io.BufferedReader(f)
print fbuf.read(20)
何が起こっていて、どうすれば修正できますか? BufferedReader はストリームをバッファリングするためのものだと思いました。もしそうなら、なぜopen()
関数はそれと互換性のあるものを返さないのですか?