python之标准输入(stdin)、标准输出(stdout)、标准错误(stdout)

python之标准输入(stdin)、标准输出(stdout)、标准错误(stdout)前言stdin,stdout,以及stderr变量,包含与标准I/O流对应的流对象。sys.stdin标准输入函数,类似于input()/raw_input()sys.stdput标准输出函数,类似于print()sys.stderr标准错误输出函数实际上,input()和prin

大家好,欢迎来到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)))

运行结果:

python之标准输入(stdin)、标准输出(stdout)、标准错误(stdout)

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

(0)
上一篇 2023-11-07 09:33
下一篇 2023-11-07 18:15

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信