我在试着理解stdin
stdout
和stderr
。
我总是在人们的代码中看到它们的使用,我不能确切地理解它们是什么。我假设他们与输入/输出有关,但一直在网上搜索解释,但找不到。有没有人知道一个好的链接和一个解释,或者如果它足够简单来解释它将会对我有很大的帮助。
因为我正在学习Python3,所以里面的例子会很有帮助。
发布于 2013-01-28 12:27:27
sys.stdin
sys.stdout
sys.stderr
解释器用于标准输入、输出和错误的文件对象:
stdin
用于所有交互式输入(包括对input()
);stdout
的调用用于print()
和表达式语句的输出,以及用于input()
;stderr
.为了让你更好的理解:
>>> import sys
>>> for i in (sys.stdin, sys.stdout, sys.stderr):
... print i
...
<open file '<stdin>', mode 'r' at 0x103451150>
<open file '<stdout>', mode 'w' at 0x1034511e0>
<open file '<stderr>', mode 'w' at 0x103451270>
模式r
表示读取,模式w
表示写入
发布于 2013-01-28 12:30:46
this能很好地解释它吗?
sys.stdin
sys.stdout
sys.stderr
对应于解释器的标准输入、输出和错误流的文件对象。标准输入用于除脚本之外的所有解释器输入,但包括对input()和raw_input()的调用。标准输出用于打印和表达式语句的输出,以及输入()和raw_input()的提示。解释器自己的提示和(几乎所有)错误消息都会发送到stderr。
stdout和stderr不必是内置的file对象:任何对象只要有一个带有字符串参数的write()方法就可以接受。
(更改这些对象不会影响由os模块中的os.popen()、os.system()或exec*()系列函数执行的进程的标准I/O流。)
使克莱里化
如果我告诉python shell执行一次打印:
print 'what is your name?'
“你叫什么名字”将转到stdout
,不管它是什么。如果您没有进行任何重定向,这是默认情况下您正在使用的终端。您可以通过各种不同的方式与标准流进行交互,例如:
sys.stdout.flush()
告诉python shell强制将我print
过的所有缓冲信息立即转到stdout
。
https://stackoverflow.com/questions/14555402
复制相似问题