关于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 相关文章推荐
Python3.x和Python2.x的区别介绍
Feb 12 Python
Python入门篇之对象类型
Oct 17 Python
解决PyCharm中光标变粗的问题
Aug 05 Python
python自动重试第三方包retrying模块的方法
Apr 24 Python
Python实现的登录验证系统完整案例【基于搭建的MVC框架】
Apr 12 Python
Python Numpy库datetime类型的处理详解
Jul 13 Python
Pandas0.25来了千万别错过这10大好用的新功能
Aug 07 Python
scikit-learn线性回归,多元回归,多项式回归的实现
Aug 29 Python
pyinstaller打包程序exe踩过的坑
Nov 19 Python
python文件绝对路径写法介绍(windows)
Dec 25 Python
Python通过VGG16模型实现图像风格转换操作详解
Jan 16 Python
Pandas之缺失数据的实现
Jan 06 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使HTML标签自动补全闭合函数代码
2012/10/04 PHP
浅析PHP安装扩展mcrypt以及相关依赖项(PHP安装PECL扩展的方法)
2013/07/05 PHP
PHP函数getenv简介和使用实例
2014/05/12 PHP
PHP动态生成指定大小随机图片的方法
2016/03/25 PHP
yum命令安装php7和相关扩展
2016/07/04 PHP
php提取微信账单的有效信息
2018/10/01 PHP
Javascript String.replace的妙用
2009/09/08 Javascript
JavaScript获取FCK编辑器信息的具体方法
2013/07/12 Javascript
ANGULARJS中使用JQUERY分页控件
2015/09/16 Javascript
JSON遍历方式实例总结
2015/12/07 Javascript
javascript对象的相关操作小结
2016/05/16 Javascript
jQuery动态添加可拖动元素完整实例(附demo源码下载)
2016/06/21 Javascript
jQuery获取table行数并输出单元格内容的实现方法
2016/06/30 Javascript
jQuery通过ajax快速批量提交表单数据
2016/10/25 Javascript
jQuery控制元素隐藏和显示
2017/03/03 Javascript
5分钟打造简易高效的webpack常用配置
2017/07/04 Javascript
vue3.0 CLI - 3.2 路由的初级使用教程
2018/09/20 Javascript
解决vue keep-alive 数据更新的问题
2018/09/21 Javascript
详解如何用VUE写一个多用模态框组件模版
2018/09/27 Javascript
Vue toFixed保留两位小数的3种方式
2020/10/23 Javascript
[46:59]完美世界DOTA2联赛PWL S2 GXR vs Ink 第二场 11.19
2020/11/20 DOTA
Python 3.x读写csv文件中数字的方法示例
2017/08/29 Python
Python换行与不换行的输出实例
2020/02/19 Python
python实现信号时域统计特征提取代码
2020/02/26 Python
VSCode配合pipenv搞定虚拟环境的实现方法
2020/05/17 Python
PyCharm设置注释字体颜色以及是否倾斜的操作
2020/09/16 Python
工作自我评价分享
2013/12/01 职场文书
开办加工厂创业计划书
2014/01/03 职场文书
药品营销策划方案
2014/06/15 职场文书
中秋节国旗下演讲稿
2014/09/05 职场文书
户籍证明书标准模板
2014/09/10 职场文书
2014年党员整改措施范文
2014/09/21 职场文书
2019年农民幸福观调查的实践感悟
2019/12/19 职场文书
Java数据开发辅助工具Docker与普通程序使用方法
2021/09/15 Java/Android
mongoDB数据库索引快速入门指南
2022/03/23 MongoDB
如何通过cmd 连接阿里云服务器
2022/04/18 Servers