【发布时间】:2011-06-06 02:54:30
【问题描述】:
在 OSX 下的 python 3.2 中,如果我在 Idle 下运行“type(sys.stdin)”,我会得到一个奇怪的答案,如下所示
>>> type(sys.stdin)
<class 'idlelib.rpc.RPCProxy'>
>>>
但如果我在终端下重新运行相同的命令,我会得到:
>>> import sys
>>> type(sys.stdin)
<class '_io.TextIOWrapper'>
>>>
我知道这是因为我在 IDLE 下运行它。但这不会误导吗?
我试图在 IDLE 中运行以下命令,并花了几个小时试图了解为什么这不起作用。 (我还是个python菜鸟)
>>> w = sys.stdin.readlines()
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
w = sys.stdin.readlines()
AttributeError: readlines
但刚刚发现我在终端下工作正常。
>>> w = sys.stdin.readlines()
wow
ww
wewew
>>>
>>> w
['wow\n', 'ww\n', 'wewew\n']
>>>
这是一个错误吗?
【问题讨论】:
-
工作方法是使用
w = list(sys.stdin),它将始终有效。而且我认为这是一个错误——sys.stdin应该实现io.IOBase的接口。 -
这也发生在 Python 2.7 中
-
它发生在所有版本的 IDLE 中,至少自从引入 readlines 以来。不幸的是,正如下面引用的开放错误所指出的,IDLE 的
stdin、stdout和stderr代理的实现并不完整且不是最新的。
标签: python python-idle