python之标准输入(stdin)、标准输出(stdout)、标准错误(stdout)
前言
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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!