Я хочу использовать буферизованный поток, потому что я хочу использовать метод peek()
для просмотра вперед, но использовать мой поток с другим методом, который ожидает файлоподобный объект. (Я бы использовал seek()
, но, возможно, придется обрабатывать конвейерный ввод-вывод, который не поддерживает произвольный доступ.)
Но этот тестовый пример терпит неудачу:
AttributeError: объект «файл» не имеет атрибута «_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()
не возвращает что-то совместимое с ней?
_checkReadable
, а мой 2.7.2 жалуется наreadable
. Я не могу найти фиксацию прямо сейчас, но, вероятно, это было изменено где-то между 2.7.0 и 2.7.2. - person Fred Foo   schedule 18.04.2012