关于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 20 Python
解密Python中的描述符(descriptor)
Jun 03 Python
详解python的数字类型变量与其方法
Nov 20 Python
Python使用三种方法实现PCA算法
Dec 12 Python
Python 使用PIL numpy 实现拼接图片的示例
May 08 Python
python3将视频流保存为本地视频文件
Jun 20 Python
tensor和numpy的互相转换的实现示例
Aug 02 Python
Python内置数据类型list各方法的性能测试过程解析
Jan 07 Python
Python操作注册表详细步骤介绍
Feb 05 Python
Python 去除字符串中指定字符串
Mar 05 Python
详解anaconda安装步骤
Nov 23 Python
python中的被动信息搜集
Apr 29 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和ACCESS写聊天室(十)
2006/10/09 PHP
Php Image Resize图片大小调整的函数代码
2011/01/17 PHP
PHP入门经历和学习过程分享
2014/04/11 PHP
PHP中上传多个文件的表单设计例子
2014/11/19 PHP
php实现在站点里面添加邮件发送的功能
2020/04/28 PHP
PHPMailer ThinkPHP实现自动发送邮件功能
2018/06/10 PHP
PHP的mysqli_set_charset()函数讲解
2019/01/23 PHP
php计数排序算法的实现代码(附四个实例代码)
2020/03/31 PHP
基于Jquery的仿Windows Aero弹出窗(漂亮的关闭按钮)
2010/09/28 Javascript
JavaScript实现url地址自动检测并添加URL链接示例代码
2013/11/12 Javascript
js实现的动画导航菜单效果代码
2015/09/10 Javascript
node+express制作爬虫教程
2016/11/11 Javascript
微信小程序 小程序制作及动画(animation样式)详解
2017/01/06 Javascript
浅谈JavaScript异步编程
2017/01/20 Javascript
js+html制作简单验证码
2017/02/16 Javascript
vue组件中的数据传递方法
2018/05/14 Javascript
Javascript实现时间倒计时功能
2018/11/17 Javascript
vue车牌号校验和银行校验实战
2019/01/23 Javascript
详解Vue中watch对象内属性的方法
2019/02/01 Javascript
Angular7.2.7路由使用初体验
2019/03/01 Javascript
Vue匿名插槽与作用域插槽的合并和覆盖行为
2019/04/22 Javascript
JavaScript运动原理基础知识详解
2020/04/02 Javascript
[15:58]DOTA2国际邀请赛采访专栏:Tongfu.Sansheng&KingJ,DK.rOtk
2013/08/08 DOTA
Python_LDA实现方法详解
2017/10/25 Python
python最长回文串算法
2018/06/04 Python
在Python中pandas.DataFrame重置索引名称的实例
2018/11/06 Python
Python selenium使用autoIT上传附件过程详解
2020/05/26 Python
Python新手学习函数默认参数设置
2020/06/03 Python
python eventlet绿化和patch原理
2020/11/21 Python
大专自我鉴定范文
2013/10/23 职场文书
车间主管岗位职责
2013/11/14 职场文书
简单租房协议书
2014/04/09 职场文书
对祖国的寄语大全
2014/04/11 职场文书
2014年法制宣传日活动方案
2014/11/02 职场文书
倡议书的格式写法
2015/04/28 职场文书
SQLServer中JSON文档型数据的查询问题解决
2021/06/27 SQL Server