关于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学习小技巧之利用字典的默认行为
May 20 Python
使用python实现knn算法
Dec 20 Python
Python遍历pandas数据方法总结
Feb 09 Python
在mac下查找python包存放路径site-packages的实现方法
Nov 06 Python
python使用Turtle库绘制动态钟表
Nov 19 Python
python+selenium 定位到元素,无法点击的解决方法
Jan 30 Python
Python序列化与反序列化pickle用法实例
Nov 11 Python
Python进程Multiprocessing模块原理解析
Feb 28 Python
Django使用list对单个或者多个字段求values值实例
Mar 31 Python
Django利用elasticsearch(搜索引擎)实现搜索功能
Nov 26 Python
MoviePy简介及Python视频剪辑自动化
Dec 18 Python
Python常遇到的错误和异常
Nov 02 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
让IE6支持min-width和max-width的方法
2010/06/25 Javascript
jquery向上向下取整适合分页查询
2014/09/06 Javascript
js表格排序实例分析(支持int,float,date,string四种数据类型)
2015/05/06 Javascript
AngularJS手动表单验证
2016/02/01 Javascript
关于js函数解释(包括内嵌,对象等)
2016/11/20 Javascript
js-FCC算法-No repeats please字符串的全排列(详解)
2017/05/02 Javascript
详解使用nvm安装node.js
2017/07/18 Javascript
详解Vue中的基本语法和常用指令
2019/07/23 Javascript
laypage+SpringMVC实现后端分页
2019/07/27 Javascript
vue柱状进度条图像的完美实现方案
2019/08/26 Javascript
在vue项目实现一个ctrl+f的搜索功能
2020/02/28 Javascript
[01:59]游戏“zheng”当时试玩会
2019/08/21 DOTA
忘记ftp密码使用python ftplib库暴力破解密码的方法示例
2014/01/22 Python
python动态网页批量爬取
2016/02/14 Python
浅谈Python使用Bottle来提供一个简单的web服务
2017/12/27 Python
50行Python代码实现人脸检测功能
2018/01/23 Python
numpy.linspace函数具体使用详解
2019/05/27 Python
Django 大文件下载实现过程解析
2019/08/01 Python
关于python导入模块import与常见的模块详解
2019/08/28 Python
PyCharm设置Ipython交互环境和宏快捷键进行数据分析图文详解
2020/04/23 Python
Python简单实现词云图代码及步骤解析
2020/06/04 Python
Python实现网络聊天室的示例代码(支持多人聊天与私聊)
2021/01/27 Python
Html5画布_动力节点Java学院整理
2017/07/13 HTML / CSS
草莓巧克力:Shari’s Berries
2017/02/07 全球购物
Jeep牧马人、切诺基和自由人零配件:4 Wheel Drive Hardware
2017/07/02 全球购物
Gap加拿大官网:Gap Canada
2017/08/24 全球购物
健身场所或家用健身设备:Life Fitness
2017/11/01 全球购物
Kathmandu澳洲户外商店:新西兰户外运动品牌
2017/11/12 全球购物
财务负责人任命书
2014/06/06 职场文书
工程造价专业求职信
2014/07/17 职场文书
法人代表身份证明书及授权委托书
2014/09/16 职场文书
夫妻分居协议书范本(有子女版)
2014/11/01 职场文书
2014年财务部工作总结
2014/11/11 职场文书
python 机器学习的标准化、归一化、正则化、离散化和白化
2021/04/16 Python
Jmerte 分布式压测及分布式压测配置
2022/04/30 Java/Android
怎么禁用Win11输入法 最新Win11输入法关闭教程
2022/08/05 数码科技