Python OS模块stdout\stdin\stderr


以python3为例

sys.stdout 与 print

当我们在 Python 中打印对象调用 print obj 时候,事实上是调用了 sys.stdout.write(obj+'\n')

以下两行在事实上等价:

1 sys.stdout.write('hello'+'\n')
2 print(hello)

sys.stdout重定向到文件

 1 1 #-*- coding:utf-8 -*-
 2  2 
 3  3 import sys
 4  4 from PyQt5.QtWidgets import QWidget
 5  5 
 6  6 out = sys.stdout
 7  7 print("out:%s",str(out))
 8  8 sys.stdout = open("Qwidget.txt","w")
 9  9 
10 10 print("outs:%s",sys.stdout)#已经重定向给了文件,所以输出到txt文件中
11 11 help(QWidget)
12 12 sys.stdout.close() #关闭文件重定向
13 13 sys.stdout = out #将系统初始值赋给stdout

sys.stdin 与 input

当我们用 input('Input promption: ') 时,事实上是先把提示信息输出,然后捕获输入,方法一方法二等效

1 hi=input("请输入打印方法1:")#python2 raw_input()方法
2 print("打印显示方法1:",hi) 
3 
4 print("请输入打印方法2:")
5 hi=sys.stdin.readline()[:-1] 
6 #去掉末尾的换行符,可以用strip( )函数(sys.stdin.readline( ).strip('\n'))或sys.stdin.readline( )[:-1]这两种方法去掉换行
7 print("打印显示方法2:",hi)