Создание io.BufferedReader из sys.stdin в Python2 - PullRequest
22 голосов
/ 20 мая 2011

Как я могу сделать объект BufferedReader из стандартного файлового объекта, такого как sys.stdin или что вы получаете из 'open'?

(Справочная информация: мне нужен метод peek (), который является стандартным файломобъекты не могут иметь. Любые предложения по решению этой проблемы также приветствуются.)

Я бы ожидал, что это сработает, но это не так:

>>> import sys  
>>> import io
>>> io.BufferedReader(sys.stdin)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'file' object has no attribute 'readable'

(Этоэто Python 2.7)

Ха, понял, по крайней мере для всего, что имеет файловый дескриптор.

stream = sys.stdin, or open(...), etc.
reader = io.open(stream.fileno(), mode='rb', closefd=False)

1 Ответ

13 голосов
/ 02 ноября 2012

Я также искал тот же код по той же причине (используя peek) некоторое время назад.И это работает:

reader = io.open(sys.stdin.fileno())
...