关于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读取mp3中ID3信息的方法
Mar 05 Python
python查找目录下指定扩展名的文件实例
Apr 01 Python
Python字符串格式化的方法(两种)
Sep 19 Python
python+opencv实现动态物体识别
Jan 09 Python
对python中Matplotlib的坐标轴的坐标区间的设定实例讲解
May 25 Python
python中ASCII码和字符的转换方法
Jul 09 Python
python3.6连接mysql数据库及增删改查操作详解
Feb 10 Python
推荐8款常用的Python GUI图形界面开发框架
Feb 23 Python
python GUI库图形界面开发之PyQt5窗口控件QWidget详细使用方法
Feb 26 Python
Windows 下更改 jupyterlab 默认启动位置的教程详解
May 18 Python
Cpython解释器中的GIL全局解释器锁
Nov 09 Python
python实现登录与注册系统
Nov 30 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
一些经常会用到的Javascript检测函数
2010/05/31 Javascript
JQuery结合CSS操作打印样式的方法
2013/12/24 Javascript
jquery弹出层类代码分享
2013/12/27 Javascript
巧用replace将文字表情替换为图片
2014/04/17 Javascript
bootstrap data与jquery .data
2014/07/07 Javascript
JavaScript中使用Math.PI圆周率属性的方法
2015/06/14 Javascript
JS实现文档加载完成后执行代码
2015/07/09 Javascript
javascript仿京东导航左侧分类导航下拉菜单效果
2020/11/25 Javascript
JavaScript实现复制或剪切内容到剪贴板功能的方法
2016/05/23 Javascript
浅谈JS运算符&&和|| 及其优先级
2016/08/10 Javascript
在线引用最新jquery文件的实现方法
2016/08/26 Javascript
详解JavaScript跨域总结与解决办法
2016/10/31 Javascript
简单实现js浮动框
2016/12/13 Javascript
Nodejs基于LRU算法实现的缓存处理操作示例
2017/03/17 NodeJs
详解wow.js中各种特效对应的类名
2017/09/13 Javascript
详解vue-cli脚手架build目录中的dev-server.js配置文件
2017/11/24 Javascript
使用vuex的state状态对象的5种方式
2018/04/19 Javascript
在vue中对数组值变化的监听与重新响应渲染操作
2020/07/17 Javascript
详解Java中String JSONObject JSONArray List转换
2020/11/13 Javascript
Python 正则表达式实现计算器功能
2017/04/29 Python
python读取图片并修改格式与大小的方法
2018/07/24 Python
Python3 批量扫描端口的例子
2019/07/25 Python
pytorch载入预训练模型后,实现训练指定层
2020/01/06 Python
python数字类型math库原理解析
2020/03/02 Python
在Keras中利用np.random.shuffle()打乱数据集实例
2020/06/15 Python
Python bisect模块原理及常见实例
2020/06/17 Python
python按照list中字典的某key去重的示例代码
2020/10/13 Python
Jeep牧马人、切诺基和自由人零配件:4 Wheel Drive Hardware
2017/07/02 全球购物
SQL Server面试题
2016/10/17 面试题
入党积极分子思想汇报
2014/01/02 职场文书
考试不及格检讨书
2014/01/09 职场文书
秦兵马俑教学反思
2014/02/07 职场文书
2014个人四风对照检查材料思想汇报
2014/09/18 职场文书
个性发展自我评价2015
2015/03/09 职场文书
php 原生分页
2021/04/01 PHP
mysql 直接拷贝data 目录下文件还原数据的实现
2021/07/25 MySQL