Making io.BufferedReader from sys.stdin in Python2

bufferedreader, python, python-2.x

Solution

I was also looking for the same code for the same reason (using `.peek()`) a while ago. And this works:

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

Problem

How can I make a BufferedReader object from a standard file object, like sys.stdin or what you get from 'open'? (Background: I need a peek() method, which the standard file objects fail at having. Any suggestions to solve this issue are also welcome.) I'd have sort of expected this to work, but it doesn't: ``` >>> 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' ``` (This is Python 2.7) Hah, got it, at least for anything that has a file descriptor. ``` stream = sys.stdin, or open(...), etc. reader = io.open(stream.fileno(), mode='rb', closefd=False) ```

Original source