关于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 01 Python
python实现名片管理系统项目
Apr 26 Python
python查看文件大小和文件夹内容的方法
Jul 08 Python
讲解Python3中NumPy数组寻找特定元素下标的两种方法
Aug 04 Python
python nmap实现端口扫描器教程
May 28 Python
python二进制读写及特殊码同步实现详解
Oct 11 Python
Django项目基础配置和基本使用过程解析
Nov 25 Python
Python谱减法语音降噪实例
Dec 18 Python
解决python -m pip install --upgrade pip 升级不成功问题
Mar 05 Python
keras训练浅层卷积网络并保存和加载模型实例
Jul 02 Python
Python爬虫基础之爬虫的分类知识总结
May 13 Python
再谈python_tkinter弹出对话框创建
Mar 20 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安装问题
2006/10/09 PHP
PHP中通过加号合并数组的一个简单方法分享
2011/01/27 PHP
php学习笔记(三)操作符与控制结构
2011/08/06 PHP
使用PHP会话(Session)实现用户登陆功能
2013/06/29 PHP
smarty的section嵌套循环用法示例
2016/05/28 PHP
php利用array_search与array_column实现二维数组查找
2019/07/08 PHP
jquery动态加载select下拉框示例代码
2013/12/10 Javascript
javascript获取隐藏元素(display:none)的高度和宽度的方法
2014/06/06 Javascript
javascript中为某个元素指定事件的三种方式
2014/08/07 Javascript
Bootstrap基础学习
2015/06/16 Javascript
理解Javascript的call、apply
2015/12/16 Javascript
JS控制按钮10秒钟后可用的方法
2015/12/22 Javascript
JS获取和修改元素样式的实例代码
2016/08/06 Javascript
AngularJs  Creating Services详解及示例代码
2016/09/02 Javascript
分享javascript、jquery实用代码段
2016/10/20 Javascript
Node.js 中使用 async 函数的方法
2017/11/20 Javascript
Easyui 关闭jquery-easui tab标签页前触发事件的解决方法
2019/04/28 jQuery
纯异步nodejs文件夹(目录)复制功能
2019/09/03 NodeJs
vue项目实现图片上传功能
2019/12/23 Javascript
如何在vue项目中嵌入jsp页面的方法(2种)
2020/02/06 Javascript
简单了解前端渐进式框架VUE
2020/07/20 Javascript
Vue实现Header渐隐渐现效果的实例代码
2020/11/05 Javascript
使用Python的Supervisor进行进程监控以及自动启动
2014/05/29 Python
Python实现感知机(PLA)算法
2017/12/20 Python
windows 10 设定计划任务自动执行 python 脚本的方法
2019/09/11 Python
解决python调用自己文件函数/执行函数找不到包问题
2020/06/01 Python
写好求职应聘自荐信的三部曲
2013/09/21 职场文书
幼儿园大班开学教师寄语
2014/04/03 职场文书
学习雷锋演讲稿
2014/05/10 职场文书
减负增效提质方案
2014/05/23 职场文书
青春励志演讲稿范文
2014/08/25 职场文书
承诺函格式模板
2015/01/21 职场文书
活动主持人开场白
2015/05/28 职场文书
婚礼领导致辞大全
2015/07/28 职场文书
2016年学校综治宣传月活动总结
2016/03/16 职场文书
react中props 的使用及进行限制的方法
2021/04/28 Javascript