fileno() not supported in Python 3.1

Ian Kelly ian.g.kelly at gmail.com
Fri Nov 14 11:51:11 EST 2014


On Fri, Nov 14, 2014 at 12:36 AM, Cameron Simpson <cs at zip.com.au> wrote:
> On 13Nov2014 15:48, satishmlmlml at gmail.com <satishmlmlml at gmail.com> wrote:
>>
>> import sys
>> for stream in (sys.stdin, sys.stdout, sys.stderr):
>>           print(stream.fileno())
>>
>>
>> io.UnsupportedOperation: fileno
>>
>> Is there a workaround?
>
>
> The first workaround that suggests itself it to use a more modern Python.
> I've got 3.4.2 here, and it goes:
>
>    Python 3.4.2 (default, Nov  5 2014, 21:19:51)
>    [GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.54)] on darwin
>    Type "help", "copyright", "credits" or "license" for more information.
>    >>> import sys
>    >>> for stream in (sys.stdin, sys.stdout, sys.stderr):
>    ...   print(stream.fileno())
>    ...
>    0
>    1
>    2
>    >>>
>
> In short, in 3.4.2 it just works.

Why do you think the Python version has anything to do with it?

Python 2.7.6 (default, Mar 22 2014, 22:59:56)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> for stream in (sys.stdin, sys.stdout, sys.stderr):
...     print(stream.fileno())
...
0
1
2

Clearly, in 2.7.6 it also "just works".



More information about the Python-list mailing list