Python标准输出重定向背景知识

发布时间:2022-04-22 08:59:14 人气:22 作者:多测师

  在Python中,文件对象sys.stdin、sys.stdout和sys.stderr分别对应解释器的标准输入、标准输出和标准出错流。在程序启动时,这些对象的初值由sys.__stdin__、sys.__stdout__和sys.__stderr__保存,以便用于收尾(finalization)时恢复标准流对象。

  Windows系统中IDLE(Python GUI)由pythonw.exe,该GUI没有控制台。因此,IDLE将标准输出句柄替换为特殊的PseudoOutputFile对象,以便脚本输出重定向到IDLE终端窗口(Shell)。这可能导致一些奇怪的问题,例如:

  Python 2.7.11 (v2.7.11:6d1b6a68f775, Dec 5 2015, 20:32:19) [MSC v.1500 32 bit (Intel)] on win32

  Type "copyright", "credits" or "license()" for more information.

Python标准输出重定向背景知识

  >>> import sys

  >>> for fd in (sys.stdin, sys.stdout, sys.stderr): print fd

  >>> for fd in (sys.__stdin__, sys.__stdout__, sys.__stderr__): print fd

  ', mode 'r' at 0x00FED020>

  ', mode 'w' at 0x00FED078>

  ', mode 'w' at 0x00FED0D0>

  >>>

  可以发现,sys.__stdout__与sys.stdout取值并不相同。而在普通的Python解释器下(如通过Windows控制台)运行上述代码时,两者取值相同。

  print语句(statement)不以逗号结尾时,会在输出字符串尾部自动附加一个换行符(linefeed);否则将一个空格代替附加的换行符。print语句默认写入标准输出流,也可重定向至文件或其他可写对象(所有提供write方法的对象)。这样,就可以使用简洁的print语句代替笨拙的object.write('hello'+'\n')写法。

  由上可知,在Python中调用print obj打印对象时,缺省情况下等效于调用sys.stdout.write(obj+'\n')。示例如下:

  >>> import sys

  >>> print 'Hello World'

  Hello World

  >>> sys.stdout.write('Hello World')

  Hello World

  以上内容为大家介绍了Python标准输出重定向背景知识,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注多测师。https://www.e70w.com/xwzx/


返回列表
在线客服
联系方式

热线电话

17727591462

上班时间

周一到周五

二维码
线