关于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爬虫基本知识
Mar 05 Python
Pycharm取消py脚本中SQL识别的方法
Nov 29 Python
Python实现的序列化和反序列化二叉树算法示例
Mar 02 Python
Appium+python自动化怎么查看程序所占端口号和IP
Jun 14 Python
详解在Python中以绝对路径或者相对路径导入文件的方法
Aug 30 Python
Python基于Socket实现简单聊天室
Feb 17 Python
python实现FTP循环上传文件
Mar 20 Python
如何学习Python time模块
Jun 03 Python
python中return如何写
Jun 18 Python
Python return语句如何实现结果返回调用
Oct 15 Python
5分钟快速掌握Python定时任务框架的实现
Jan 26 Python
python中如何对多变量连续赋值
Jun 03 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学习笔记之一
2011/01/17 PHP
PHP+Mysql树型结构(无限分类)数据库设计的2种方式实例
2014/07/15 PHP
Docker配置PHP开发环境教程
2016/12/21 PHP
PHP+ajax实现获取新闻数据简单示例
2018/05/08 PHP
php文件上传原理与实现方法详解
2019/12/20 PHP
jquery拖动插件(jquery.drag)使用介绍
2013/06/18 Javascript
js中自定义方法实现停留几秒sleep
2014/07/11 Javascript
js实现点击左右按钮轮播图片效果实例
2015/01/29 Javascript
JQuery移动页面开发之屏幕方向改变与滚屏的实现
2015/12/03 Javascript
Node.js中JavaScript操作MySQL的常用方法整理
2016/03/01 Javascript
jQuery Ajax和getJSON获取后台普通json数据和层级json数据用法分析
2016/06/08 Javascript
js中使用使用原型(prototype)定义方法的好处详解
2016/07/04 Javascript
多个上传文件用js验证文件的格式和大小的方法(推荐)
2017/03/09 Javascript
Javascript中的getter和setter初识
2017/08/17 Javascript
vue中$refs的用法及作用详解
2018/04/24 Javascript
浅谈Angular HttpClient简单入门
2018/05/04 Javascript
Vue动态获取width的方法
2018/08/22 Javascript
如何为vuex实现带参数的 getter和state.commit
2019/01/04 Javascript
如何能分清npm cnpm npx nvm
2019/01/17 Javascript
vue 实现v-for循环回来的数据动态绑定id
2019/11/07 Javascript
[46:16]2018DOTA2亚洲邀请赛3月30日 小组赛B组 iG VS VP
2018/03/31 DOTA
Python的垃圾回收机制深入分析
2014/07/16 Python
python 递归遍历文件夹,并打印满足条件的文件路径实例
2017/08/30 Python
python实现校园网自动登录的示例讲解
2018/04/22 Python
分析经典Python开发工程师面试题
2019/04/08 Python
使用Python将xmind脑图转成excel用例的实现代码(一)
2020/10/12 Python
python爬取音频下载的示例代码
2020/10/19 Python
一款利用html5和css3实现的3D滚动特效的教程
2015/01/04 HTML / CSS
HTML+CSS3模拟心的跳动实例代码
2017/09/05 HTML / CSS
历史学专业推荐信
2013/11/06 职场文书
高中升旗仪式演讲稿
2014/09/09 职场文书
模范教师事迹材料
2014/12/16 职场文书
圆明园观后感
2015/06/03 职场文书
2015年物业管理员工工作总结
2015/10/15 职场文书
CSS实现切角+边框+投影+内容背景色渐变效果
2021/11/01 HTML / CSS
Nginx本地配置SSL访问的实例教程
2022/05/30 Servers