关于sys.stdout和print的区别详解


Posted in Python onDecember 05, 2019

一、sys.stdout的形式就是print的一种默认输出格式,等于print "%VALUE%"

print函数是对sys.stdout的高级封装,看下print函数的解释

Prints the values to a stream, or to sys.stdout by default.
 Optional keyword arguments:
 file: a file-like object (stream); defaults to the current sys.stdout.
 sep: string inserted between values, default a space.
 end: string appended after the last value, default a newline.

print是默认调用了sys.stdout.write()方法将输出打印到控制台

print 也可通过file参数将输出打印到其他文件中

f = open('test.txt','a')
print('this is a test',file=f)

二、sys.stdout.write()输出不会自动换行,没有end,可用转义字符自行控制

/n 换行

/r 回车到本行首,可刷新输出

如用sys.stdout.write() 和\r实现自定义进度条

# -*- coding: utf-8 -*-
from tqdm import tqdm
import time
import sys
 
for i in tqdm(range(100)):
 time.sleep(.1)
for i in range(100):
 a = (i+1)/5
 b = 20-a
 #sys.stdout.write('\r>>convert image %d/%d'%(i,b))
 
 sys.stdout.write('\r|%s%s|%d%%'%(a*'?',b*' ',i+1))
 sys.stdout.flush()
 time.sleep(.1)

运行结果如下图:

关于sys.stdout和print的区别详解

sys.stdout.flush()强制刷新缓冲区,

缓冲区的刷新方式:

1.flush()刷新缓存区

2.缓冲区满时,自动刷新

3.文件关闭或者是程序结束自动刷新。

当我们需要打印一些字符时,并不是立刻就打印,而是先将需要打印的字符放入缓冲区,在缓冲区刷新时打印,当缓冲区未满,或者程序运行未结束时,可使用sys.stdout.flush()强制刷新缓冲区,立刻进行打印;

附:写出漂亮的进度条模块tqdm

from tqdm import tqdm 
import time
for i in tqdm(range(10000)): 
 time.sleep(0.01)

运行结果如下:

关于sys.stdout和print的区别详解

以上这篇关于sys.stdout和print的区别详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中的类学习笔记
Sep 23 Python
简述Python中的面向对象编程的概念
Apr 27 Python
Python简单删除目录下文件以及文件夹的方法
May 27 Python
Python基于Pymssql模块实现连接SQL Server数据库的方法详解
Jul 20 Python
Python中defaultdict与lambda表达式用法实例小结
Apr 09 Python
详解python实现小波变换的一个简单例子
Jul 18 Python
python 接口实现 供第三方调用的例子
Aug 13 Python
Python创建一个元素都为0的列表实例
Nov 28 Python
Python的logging模块基本用法
Dec 24 Python
教你怎么用Python实现多路径迷宫
Apr 29 Python
解决Tkinter中button按钮未按却主动执行command函数的问题
May 23 Python
Python Matplotlib绘制两个Y轴图像
Apr 13 Python
flask实现验证码并验证功能
Dec 05 #Python
使用python写一个自动浏览文章的脚本实例
Dec 05 #Python
Python字节单位转换实例
Dec 05 #Python
使用Python paramiko模块利用多线程实现ssh并发执行操作
Dec 05 #Python
Python使用指定字符长度切分数据示例
Dec 05 #Python
python从zip中删除指定后缀文件(推荐)
Dec 05 #Python
python3 求约数的实例
Dec 05 #Python
You might like
hadoop常见错误以及处理方法详解
2013/06/19 PHP
destoon各类调用汇总
2014/06/20 PHP
php读取mssql的ntext字段返回值为空的解决方法
2014/12/30 PHP
php实现和c#一致的DES加密解密实例
2017/07/24 PHP
Laravel 5.5 实现禁用用户注册示例
2019/10/24 PHP
一个高效的JavaScript压缩工具下载集合
2007/03/06 Javascript
javascript 处理null及null值示例
2014/06/09 Javascript
图解prototype、proto和constructor的三角关系
2016/07/31 Javascript
微信 java 实现js-sdk 图片上传下载完整流程
2016/10/21 Javascript
利用angular.copy取消变量的双向绑定与解析
2016/11/25 Javascript
js 函数式编程学习笔记
2017/03/25 Javascript
深入探究angular2 UI组件之primeNG用法
2017/07/26 Javascript
JS实现简单表格排序操作示例
2017/10/07 Javascript
layer弹出层 iframe层去掉滚动条的实例代码
2018/08/17 Javascript
在Create React App中启用Sass和Less的方法示例
2019/01/16 Javascript
Node.js API详解之 V8模块用法实例分析
2020/06/05 Javascript
python每隔N秒运行指定函数的方法
2015/03/16 Python
Python的Flask框架及Nginx实现静态文件访问限制功能
2016/06/27 Python
详解python如何调用C/C++底层库与互相传值
2016/08/10 Python
基于Python的关键字监控及告警
2017/07/06 Python
梯度下降法介绍及利用Python实现的方法示例
2017/07/12 Python
一行python实现树形结构的方法
2019/08/09 Python
pytorch Dataset,DataLoader产生自定义的训练数据案例
2021/03/03 Python
html5图片上传预览示例分享
2014/04/14 HTML / CSS
HTML文本属性&颜色控制属性的实现
2019/12/17 HTML / CSS
美国鲍勃商店:Bob’s Stores
2018/07/22 全球购物
索尼巴西商店:Sony巴西
2019/06/21 全球购物
中文专业毕业生自荐信
2013/10/28 职场文书
金融学专科生自我鉴定
2014/02/21 职场文书
金融保险专业求职信
2014/09/03 职场文书
公务员检讨书
2014/11/01 职场文书
党员学习中国梦心得体会
2016/01/05 职场文书
导游词之江南周庄
2019/12/06 职场文书
CSS实现章节添加自增序号的方法
2021/06/23 HTML / CSS
关于MySQL临时表为什么可以重名的问题
2022/03/22 MySQL
解决springboot druid数据库连接失败后一直重连的方法
2022/04/19 Java/Android