我遇到了一个有些不寻常的情况。我正在尝试编写交互式控制台脚本(用于教学/测试目的),并尝试了以下操作:
$ python > /dev/null
Python 2.7.3 (v2.7.3:70274d53c1dd, Apr 9 2012, 20:52:43)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> print 3
>>>
3
没有被输出,所以显然其他所有东西都在stderr
中。到这里为止还不错。但是然后我们重定向了stderr
:
$ python 2> /dev/null
>>> print 3
3
>>>
在这两种情况下,如何打印提示?
编辑:重定向stdout
和stderr
会导致什么都不打印。所以 Python 明显地“选择”stdout
或stderr
之一。这是否有记录?我无法找出 Python 源代码中实际执行的方式。
isatty
? - user395760PyOS_StdioReadline
这个函数似乎负责读取输入,但是硬编码为将提示打印到stderr
。如果像第二个示例建议的那样将stderr
重定向到stdout
,我们应该能看到标题栏。 - nneonneo