关于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 相关文章推荐
Windows系统下多版本pip的共存问题详解
Oct 10 Python
Python之用户输入的实例
Jun 22 Python
Selenium的使用详解
Oct 19 Python
django orm 通过related_name反向查询的方法
Dec 15 Python
pyqt5 comboBox获得下标、文本和事件选中函数的方法
Jun 14 Python
Python字典对象实现原理详解
Jul 01 Python
Python完成哈夫曼树编码过程及原理详解
Jul 29 Python
python批量图片处理简单示例
Aug 06 Python
Python实现图片添加文字
Nov 26 Python
tensorflow使用L2 regularization正则化修正overfitting过拟合方式
May 22 Python
Python实现定时监测网站运行状态的示例代码
Sep 30 Python
Python趣味挑战之给幼儿园弟弟生成1000道算术题
May 28 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配置文件中最常用四个ini函数
2007/03/19 PHP
php xml留言板 xml存储数据的简单例子
2009/08/24 PHP
《PHP编程最快明白》第四讲:日期、表单接收、session、cookie
2010/11/01 PHP
Yii2框架实现注册和登录教程
2016/09/30 PHP
PHP两个n位的二进制整数相加问题的解决
2018/08/26 PHP
PHP文件打开关闭及读写操作示例解析
2020/08/06 PHP
动态改变textbox的宽高的js
2006/10/26 Javascript
IE6图片加载的一个BUG解决方法
2010/07/13 Javascript
基于jQuery的弹出框插件
2012/03/18 Javascript
JavaScript实现url地址自动检测并添加URL链接示例代码
2013/11/12 Javascript
Jquery树插件zTree用法入门教程
2015/02/17 Javascript
jQuery DOM删除节点操作指南
2015/03/03 Javascript
jquery插件hiAlert实现网页对话框美化
2015/05/03 Javascript
js实现表单Radio切换效果的方法
2015/08/17 Javascript
原生js验证简洁注册登录页面
2016/12/17 Javascript
vue2.0父子组件及非父子组件之间的通信方法
2017/01/21 Javascript
jQuery实现定时隐藏对话框的方法分析
2018/02/12 jQuery
基于Vue渲染与插件的加载顺序的问题详解
2018/03/05 Javascript
详解webpack4升级指南以及从webpack3.x迁移
2018/06/12 Javascript
微信小程序网络请求封装示例
2018/07/24 Javascript
通过cordova将vue项目打包为webapp的方法
2019/02/02 Javascript
Vue强制组件重新渲染的方法讨论
2020/02/03 Javascript
Node.js API详解之 util模块用法实例分析
2020/05/09 Javascript
解决vue打包 npm run build-test突然不动了的问题
2020/11/13 Javascript
[01:32:10]NAVI vs VG Supermajor 败者组 BO3 第一场 6.5
2018/06/06 DOTA
pycharm新建一个python工程步骤
2019/07/16 Python
在pandas中遍历DataFrame行的实现方法
2019/10/23 Python
关于HTML5 Placeholder新标签低版本浏览器下不兼容的问题分析及解决办法
2016/01/27 HTML / CSS
HTML5学习心得总结(推荐)
2016/07/08 HTML / CSS
墨西哥皇宫度假村预订:Palace Resorts
2018/06/16 全球购物
餐饮管理自我介绍信
2014/01/15 职场文书
协议书格式
2014/04/23 职场文书
运动会广播稿诗歌版
2014/09/12 职场文书
教师个人事迹材料
2014/12/17 职场文书
2015教师年度考核评语
2015/03/25 职场文书
党员转正大会主持词
2015/07/02 职场文书