关于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实现的检测网站挂马程序
Nov 30 Python
python中常用检测字符串相关函数汇总
Apr 15 Python
用生成器来改写直接返回列表的函数方法
May 25 Python
python3正则提取字符串里的中文实例
Jan 31 Python
Django 开发环境与生产环境的区分详解
Jul 26 Python
Python一键安装全部依赖包的方法
Aug 12 Python
解决pytorch GPU 计算过程中出现内存耗尽的问题
Aug 19 Python
python实现宿舍管理系统
Nov 22 Python
django 框架实现的用户注册、登录、退出功能示例
Nov 28 Python
Python实现线性判别分析(LDA)的MATLAB方式
Dec 09 Python
Pytest框架之fixture的详细使用教程
Apr 07 Python
Python实现一个简单的递归下降分析器
Aug 01 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
通过PHP的内置函数,通过DES算法对数据加密和解密
2012/06/21 PHP
浅谈使用 Yii2 AssetBundle 中 $publishOptions 的正确姿势
2017/11/08 PHP
PHP合并两个或多个数组的方法
2019/01/20 PHP
URI、URL和URN之间的区别与联系
2006/12/20 Javascript
深入分析js中的constructor和prototype
2012/04/07 Javascript
使用jQuery清空file文件域的解决方案
2013/04/12 Javascript
jquery中选择块并改变属性值的方法
2013/07/31 Javascript
js截取小数点后几位的写法
2013/11/14 Javascript
js propertychange和oninput事件
2014/09/28 Javascript
node.js中的fs.appendFile方法使用说明
2014/12/17 Javascript
分享一个常用的javascript静态类
2014/12/31 Javascript
javascript手工制作悬浮菜单
2015/02/12 Javascript
浅谈JavaScript正则表达式分组匹配
2015/04/10 Javascript
js判断手机号运营商的方法
2015/10/23 Javascript
微信小程序日期时间选择器使用方法
2018/02/01 Javascript
微信小程序实现验证码获取倒计时效果
2018/02/08 Javascript
vue超时计算的组件实例代码
2018/07/09 Javascript
JavaScript实现的拼图算法分析
2019/02/13 Javascript
JS左右无缝轮播功能完整实例
2019/05/16 Javascript
使用C语言扩展Python程序的简单入门指引
2015/04/14 Python
Python实现的tcp端口检测操作示例
2018/07/24 Python
python 整数越界问题详解
2019/06/27 Python
python elasticsearch环境搭建详解
2019/09/02 Python
意大利奢侈品网站:Italist
2016/08/23 全球购物
10条PHP编程习惯
2014/05/26 面试题
质检员的岗位职责
2013/11/15 职场文书
应届毕业生求职信
2013/11/30 职场文书
毕业论文评语大全
2014/04/29 职场文书
党的群众路线学习材料
2014/05/16 职场文书
节约粮食标语
2014/06/18 职场文书
大学生创业计划书怎么写
2014/09/15 职场文书
2015年度内部审计工作总结
2015/05/20 职场文书
阿凡达观后感
2015/06/10 职场文书
祝酒词范文
2015/08/12 职场文书
读《工匠精神》有感:热爱工作,精益求精
2019/12/28 职场文书
tomcat正常启动但网页却无法访问的几种解决方法
2022/05/06 Servers