python 以标准输出(sys.stdout)为例,看python的标准输入、标准错误输出

看了一个博客,挺不错的。http://www.cnblogs.com/turtle-fly/p/3280519.html

标准输出(sys.stdout)对应的操作就是print(打印)了,标准输入(sys.stdin)则对应input(接收输入)操作,标准错误输出和标准输出类似也是print(打印)。

python最基本的操作 - 打印:

print 1

其效果是把 1 写在console(命令行)里面让你看。

实际上他的操作可以理解为:把console(命令行)作为一个板子,通过sys.stdout = console指定往console板子上写东西(console是默认的,也就是说你不修改要往哪儿写的话,就会默认往这写),在print 1的时候,就是告诉python,我要写1,然后python就会去sys.stdout所指定的板子里,也就是console(命令行)里写上 1。

(标准错误输出也是同样的过程,你会发现当程序出错时,错误信息也会打印在console里面。)

其实只要一个对象具有write方法,就可以被当作“板子”,告诉sys.stdout去哪里写。

说道write方法,第一个想到的可能就是文件操作了。

f=open(‘log.txt‘,‘w‘)

想上面那样声明一个文件对象 f,此文件对象就拥有了write方法,就可以被用来当作标准输出和保准错误输出的板子。

f=open(‘log.txt‘,‘w‘)
__console__ = sys.stdout    #把默认的“板子” - 命令行做个备份,以便可以改回来

sys.stdout = f

print 1
sys.stdout = __console__
print 2

上面的操作,通过sys.stdout = f 指定打印时的板子改成了 f。所以在使用print的时候,不再是把1打印在命令行里,而是写在了log.txt文件里面。

后面又把板子改成了命令行,此时print 2就又把2打印到命令行了

时间: 2024-10-18 05:56:15

python 以标准输出(sys.stdout)为例,看python的标准输入、标准错误输出的相关文章

linux将标准输出和标准错误输出都重定向到一个文件?

需求描述: 今天在写crontab,里面有标准输出和错误输出,之前使用的是 > /dev/null 2>&1 那这个意思也就等同于将标准输出和错误输出都输出到/dev/null中,在这里记录下 操作过程: 1.原crontab定时任务,分别对标准输出和标准错误输出进行定向 [[email protected] mail]# crontab -l */1 * * * * /usr/sbin/ntpdate 192.168.53.22 >/dev/null 2>&1 2

Python 标准输出 sys.stdout 重定向

使用 print obj 而非 print(obj) 一些背景 sys.stdout 与 print 当我们在 Python 中打印对象调用 print obj 时候,事实上是调用了 sys.stdout.write(obj+'\n') print 将你需要的内容打印到了控制台,然后追加了一个换行符 print 会调用 sys.stdout 的 write 方法 以下两行在事实上等价: sys.stdout.write('hello'+'\n') print 'hello' sys.stdin

[Python]print vs sys.stdout.write

之前只是在项目中看到过,没怎么注意,正好跟对象一起看python学习手册,看到了这个部分于是来研究下. python版本 2.7.x os  win7 print 一般就是执行脚本的时候,把信息直接打印到标准输出,也就是我们通常说的控制台 print是python __builtin__ 中的一个方法,来看看他的定义 def print(stream): """ print(value, ..., sep=' ', end='\\n', file=sys.stdout) Pr

从python中copy与deepcopy的区别看python引用

讨论copy与deepcopy的区别这个问题要先搞清楚python中的引用.python的内存管理. python中的一切事物皆为对象,并且规定参数的传递都是对象的引用.可能这样说听起来比较难懂,对比一下PHP中的赋值和引用就有大致的概念了.参考下面一段引用: 1. python不允许程序员选择采用传值还是传引用.Python参数传递采用的肯定是“传对象引用”的方式.实际上,这种方式相当于传值和传引用的一种综合.如果函数收到的是一个可变对象(比如字典或者列表)的引用,就能修改对象的原始值——相当

python 之sys.stdout小记

标准输出(sys.stdout)-->print(打印) 标准输入(sys.stdin)-->input(接收输入) 标准错误输出和标准输出类似也是print(打印). python最基本的操作 - 打印: print 1 其效果是把 1 写在console(命令行)里面让你看. 也可以理解为:把console(命令行)作为一个板子,通过sys.stdout = console指定往console板子上写东西(console是默认的,也就是说你不修改要往哪儿写的话,就会默认往这写),在prin

Python 处理标准输出

输出有两种,一种是标准输出,一种是标准错误输出,python 处理标准输出使用 sys.stdout ,处理标准错误输出用 sys.stderr In [2]: import sys In [3]: sys.stdout.write('Hello World') # 标准输出(看起来跟print用法一致) Hello World In [4]: sys.stderr.write('Hello World') # 标准错误输出 Hello World [[email protected] ~]#

Python IDLE reload(sys)后无法正常执行命令的原因

通常大多数人执行reload(sys)这条语句其实仅仅是为了能够修改Python的默认字符集,也就是能够调用sys.setdefaultencoding().但是如果在IDLE中执行reload(sys),就会导致接下来无法正常执行任何命令. 起初遇到这个问题也是束手无策,后来无意间在stackoverflow上看到有人说到了这个问题.原来是因为IDLE作为一个GUI Shell环境,在启动初始化过程中,会设置特定的标准输入.标准输出和标准错误输出,使得输入和输出都在IDLE的GUI Shell

python标准输出 标准错误 重定向

1.sys.stdin  为文件对象, 当对文件对象做循环的时候,返回的为行数 2.ls > log 2>&1  标准输出和标准错误都输出到log,&> log也可以,但是会有版本限制 3.print 和stdout的区别: print 是调用一个对象的write方法,通常是stdout print会先进行格式转换 print 123456   == sys.stdout.write(str(123456)+'\n') 4.标准输出不可以为int类型, sys.stdou

(转载)Python IDLE reload(sys)后无法正常执行命令的原因

通常大多数人执行reload(sys)这条语句其实仅仅是为了能够修改Python的默认字符集,也就是能够调用sys.setdefaultencoding().但是如果在IDLE中执行reload(sys),就会导致接下来无法正常执行任何命令. 起初遇到这个问题也是束手无策,后来无意间在stackoverflow上看到有人说到了这个问题.原来是因为IDLE作为一个GUI Shell环境,在启动初始化过程中,会设置特定的标准输入.标准输出和标准错误输出,使得输入和输出都在IDLE的GUI Shell