#本文纯菜鸟,所有博客为个人学习记录所用。不对的地方希望大家多多指教。
sys.stdout : standard output file object; used by print()
sys._stdout_ : the original stdout; don't touch!
从sys的help文档中对sys.stdout的定义得知,sys.stdout 中存储的是输出去向的引用。比如说sys.stdout默认指向的是cmd的窗口([1]中称之为"控制台(console)",我个人理解“控制台”指的就是cmd窗口)。
当我们在Python中打印一个对象时print (obj),实际上是调用了 sys.stdout.write(obj+'\n')。
print将需要的内容打印到控制台,然后追加一个换行符。
以下两行实际上是等价的:
sys.stdout.write('hello'+'\n')
print 'hello'
下面给出一个使用sys.stdout的例子:
#coding=gbk
#将模块string的help文档保存到名为”help_for_string.log“的文件中
import sys,string
f = open('d:\\help_for_string.log','w')
sys.stdout = f
help(string)
f.close()
sys.stdout=sys.__stdout__ #两个下划线__stdout__
默认情况下,sys.stdout指向的控制台,help(string)会将string的帮助文档输出到cmd窗口上。若将sys.stdout指向被以“w”方式打开的文件“help_for_string.log”时,本该输出到cmd界面的内容被输出到(“w”)文件中。使用print()同样可以将某内容
参考:
[1] Python标准输出sys.stdout重定向
http://www.cnblogs.com/turtle-fly/p/3280519.html