Использование io.BufferedReader в потоке, полученном с помощью open()?

Я хочу использовать буферизованный поток, потому что я хочу использовать метод peek()для просмотра вперед, но использую свой поток другим методом, который ожидает файлоподобный объект (я бы использовал seek(), но, возможно, придется обрабатывать ввод-вывод по конвейеру, который не поддерживает произвольный доступ.)

Но этот тестовый пример не пройден:

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()не возвращает что-то совместимое с ней?

14
задан codeforester 24 May 2019 в 02:33
поделиться