大家好,欢迎来到IT知识分享网。
前言
stdin,stdout ,以及stderr变量,包含与标准I/O流对应的流对象。
sys.stdin —- 标准输入函数,类似于input()/raw_input()
sys.stdput —-标准输出函数,类似于print()
sys.stderr —-标准错误输出函数
实际上,input()和print()都是通过调用标准流实现,sys.stdin和sys.stdout实质上不过是两个interface接口,用于切换不同i/o。
sys.stdin vs input()/raw_input()【标准输入】
sys.stdin.readline() 用于读取一行文本输入,直到按回车。
【注意】①该方式会将换行符打印出来;②此方式无法在输入时为输入内容定义前缀。
sys.stdin.readlines() 用于读取多行文本输入,按下回车 后,无法退出输入。
【注意】①Pycharm中按CTRL+D退出输入模式;②输入数据类型为列表
input()/raw_input() 用于读取一行文本输入;回车符结束输入,但是回车符不会被包含在输入内。
举例:
# -*- encoding:utf-8 -*- import sys from pip._vendor.distlib.compat import raw_input a = raw_input('raw_input()方式,请输入:') b = input('input()方式,请输入:') print('aw_input()方式,输入数据:{},数据类型:{}'.format(a, type(a)), 'input()方式,输入数据:{},数据类型:{}'.format(b, type(b)), sep='\n') c = sys.stdin.readline() # ①该方式会将换行符打印出来;②此方式无法在输入时为输入内容定义前缀 print('sys.stdin.readline()方式,输入数据:{},数据类型:{}'.format(c, type(c))) d = sys.stdin.readlines() print('sys.stdin.readlines()方式,输入数据:{},数据类型:{}'.format(d, type(d)))
运行结果:
sys.stdout vs print()【标准输出】
print:python在调用print的过程中,实际上是引用了 sys.stdout.write(obj+’/n’) ,即 print()结束时默认换行,若想实现不自动换行,可使用 print(param,end=‘’) ;
sys.stdout.write() 方法把字符写入到标准输出中,也就是控制台。该方法默认不换行,若想实现换行,可使用 sys.stdout.write(‘str/n’)
区别: print() 几乎可以打印所有类型的数据,但是 sys.stdout.write() 只接受字符型数据
例如:
import sys print('Hello World!') # 该语句会在标准输出的屏幕上打印 Hello World! # 等价于: sys.stdout.write('Hello World!\n')
sys.stdout和sys.stderr
1、标准输出和标准错误(通常缩写为 stdout 和 stderr)是建立在每个UNIX系统内的管道(pipe)。
当你 print 某东西时,结果输出到 stdout 管道中;当你的程序崩溃并打印出调试信息时(象Python中的错误跟踪),结果输出到 stderr 管道中。
2、通常这两个管道只与你正在工作的终端窗口相联,所以当一个程序打印输出时,你可以看到输出,并且当一个程序崩溃时,你可以看到调试信息。(如果你在一个基于窗口的Python IDE系统上工作,stdout 和 stderr 缺省为“交互窗口”。)
3、stdout 和 stderr 都是类文件对象,就象我们在提取输入源中所讨论的一样,但它们都是只写的。它们没有 read 方法,只有 write。
然而,它们的确是类文件对象,并且你可以将任意文件对象或类文件对象赋给它们来重定向输出。
4、sys.stdout是有缓冲区的,解决缓冲有两种方式:
- print()或者 sys.stdout.write() 后加 sys.stdout.flush()
- 执行python脚本时增加-u参数,即 python -u XXX.py
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/31422.html