关于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 16 Python
Python的Twisted框架上手前所必须了解的异步编程思想
May 25 Python
Python网络编程中urllib2模块的用法总结
Jul 12 Python
Django教程笔记之中间件middleware详解
Aug 01 Python
用python生成1000个txt文件的方法
Oct 25 Python
python 通过类中一个方法获取另一个方法变量的实例
Jan 22 Python
Python面向对象程序设计示例小结
Jan 30 Python
PyQt5实现简单数据标注工具
Mar 18 Python
Python pandas库中的isnull()详解
Dec 26 Python
Pytorch实现LSTM和GRU示例
Jan 14 Python
python如何通过twisted搭建socket服务
Feb 03 Python
pip install 使用国内镜像的方法示例
Apr 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输出含有“#”字符串的方法
2017/01/18 PHP
谈谈从phpinfo中能获取哪些值得注意的信息
2017/03/28 PHP
thinkphp下MySQL数据库读写分离代码剖析
2017/04/18 PHP
详谈symfony window下的安装 安装时候出现的问题以及解决方法
2017/09/28 PHP
PHP 进程池与轮询调度算法实现多任务的示例代码
2019/11/26 PHP
jQuery获取Select选择的Text和Value(详细汇总)
2013/01/25 Javascript
你必须知道的Javascript知识点之"深入理解作用域链"的介绍
2013/04/23 Javascript
js+html5实现canvas绘制圆形图案的方法
2015/06/05 Javascript
关于JS中的apply,call,bind的深入解析
2016/04/05 Javascript
JS返回页面时自动回滚到历史浏览位置
2018/09/26 Javascript
NodeJS加密解密及node-rsa加密解密用法详解
2018/10/12 NodeJs
Vue使用NPM方式搭建项目
2018/10/25 Javascript
jQuery位置选择器用法实例分析
2019/06/28 jQuery
Vue.js项目实战之多语种网站的功能实现(租车)
2019/08/07 Javascript
Vue开发中遇到的跨域问题及解决方法
2020/02/11 Javascript
ES11屡试不爽的新特性,你用上了几个
2020/10/21 Javascript
[54:02]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 IG vs VGJ.T
2018/04/03 DOTA
[58:35]OG vs EG 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.22
2019/09/05 DOTA
[43:26]完美世界DOTA2联赛PWL S2 Forest vs Rebirth 第二场 11.20
2020/11/23 DOTA
Python中bisect的用法
2014/09/23 Python
python判断windows系统是32位还是64位的方法
2015/05/11 Python
python使用wxpython开发简单记事本的方法
2015/05/20 Python
Django的session中对于用户验证的支持
2015/07/23 Python
Python OpenCV处理图像之图像像素点操作
2018/07/10 Python
Python爬虫基础之XPath语法与lxml库的用法详解
2018/09/13 Python
利用python修改json文件的value方法
2018/12/31 Python
python中正则表达式与模式匹配
2019/05/07 Python
Python中模块(Module)和包(Package)的区别详解
2019/08/07 Python
python tkinter之 复选、文本、下拉的实现
2020/03/04 Python
利用纯CSS3实现文字向右循环闪过效果实例(可用于移动端)
2017/06/15 HTML / CSS
晚归检讨书
2014/02/19 职场文书
青蓝工程实施方案
2014/03/27 职场文书
教师职业道德事迹材料
2014/08/18 职场文书
太空授课观后感
2015/06/17 职场文书
《我和小伙伴》教学反思
2016/02/20 职场文书
Go归并排序算法的实现方法
2022/04/06 Golang