关于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代码实例
Feb 04 Python
简单介绍Python中的filter和lambda函数的使用
Apr 07 Python
深入探究Django中的Session与Cookie
Jul 30 Python
python修改list中所有元素类型的三种方法
Apr 09 Python
python读取文本中数据并转化为DataFrame的实例
Apr 10 Python
Windows 64位下python3安装nltk模块
Sep 19 Python
详解python使用pip安装第三方库(工具包)速度慢、超时、失败的解决方案
Dec 02 Python
用Pytorch训练CNN(数据集MNIST,使用GPU的方法)
Aug 19 Python
Python迭代器iterator生成器generator使用解析
Oct 24 Python
tensorflow实现读取模型中保存的值 tf.train.NewCheckpointReader
Feb 10 Python
详解python metaclass(元类)
Aug 13 Python
浅谈如何使用python抓取网页中的动态数据实现
Aug 17 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 defined()函数的使用图文详解
2019/07/20 PHP
php的RSA加密解密算法原理与用法分析
2020/01/23 PHP
jQuery入门第一课 jQuery选择符
2010/03/14 Javascript
javascript中的正则表达式使用指南
2015/03/01 Javascript
javascript实现炫酷的拖动分页
2015/05/11 Javascript
详解js中构造流程图的核心技术JsPlumb(2)
2015/12/08 Javascript
基于JavaScript实现动态创建表格和增加表格行数
2015/12/20 Javascript
jQuery实现区域打印功能代码详解
2016/06/17 Javascript
vue服务端渲染的实例代码
2017/08/28 Javascript
微信小程序开发之好友列表字母列表跳转对应位置
2017/09/26 Javascript
基于JavaScript实现报警器提示音效果
2017/10/27 Javascript
bootstrap select下拉搜索插件使用方法详解
2017/11/23 Javascript
微信小程序实现打开内置地图功能【附源码下载】
2017/12/07 Javascript
jQuery中图片展示插件highslide.js的简单dom
2018/04/22 jQuery
javascriptvoid(0)含义以及与"#"的区别讲解
2019/01/19 Javascript
基于JavaScript实现单例模式
2019/10/30 Javascript
[05:05]第三天的dota2
2013/07/29 DOTA
[01:07:57]DOTA2-DPC中国联赛 正赛 Ehome vs Magma BO3 第二场 1月19日
2021/03/11 DOTA
Python类的多重继承问题深入分析
2014/11/09 Python
使用Python的Scrapy框架编写web爬虫的简单示例
2015/04/17 Python
详解python 字符串和日期之间转换 StringAndDate
2017/05/04 Python
Python3计算三角形的面积代码
2017/12/18 Python
python 匹配url中是否存在IP地址的方法
2018/06/04 Python
python网络应用开发知识点浅析
2019/05/28 Python
Python代码生成视频的缩略图的实例讲解
2019/12/22 Python
Python实现自动访问网页的例子
2020/02/21 Python
python中return如何写
2020/06/18 Python
英国Zoro工具:手动工具,电动工具和个人防护用品
2016/11/02 全球购物
英国定做窗帘和纺织品面料一站式商店:Dekoria
2018/08/29 全球购物
招聘与培训专员岗位职责
2014/01/30 职场文书
弘扬职业精神演讲稿
2014/03/20 职场文书
2014年党员干部四风问题自我剖析材料
2014/09/29 职场文书
2015年双拥工作总结
2015/04/08 职场文书
六一文艺汇演主持词
2015/06/30 职场文书
Node.js实现断点续传
2021/06/23 Javascript
阿里云服务器Ubuntu 20.04上安装Odoo 15
2022/05/20 Servers