关于sys.stdout和print的区别详解

 更新时间:2019年12月05日 09:57:27   作者:朔方_  
今天小编就为大家分享一篇关于sys.stdout和print的区别详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

一、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.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的区别详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • python中的import语句用法大全

    python中的import语句用法大全

    import语句用来导入其他python文件(称为模块module),使用该模块里定义的类、方法或者变量,从而达到代码复用的目的,文中给大家提到import 语句的两种格式通过示例代码介绍的很详细,需要的朋友参考下吧
    2021-07-07
  • 教你利用PyTorch实现sin函数模拟

    教你利用PyTorch实现sin函数模拟

    这篇文章主要给大家介绍了关于教你利用PyTorch实现sin函数模拟的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2022-01-01
  • python实现批量获取指定文件夹下的所有文件的厂商信息

    python实现批量获取指定文件夹下的所有文件的厂商信息

    这篇文章主要介绍了python实现批量获取指定文件夹下的所有文件的厂商信息的方法,是非常实用的技巧,涉及到文件的读写与字典的操作等技巧,需要的朋友可以参考下
    2014-09-09
  • django之自定义软删除Model的方法

    django之自定义软删除Model的方法

    这篇文章主要介绍了django之自定义软删除Model的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • python应用之如何使用Python发送通知到微信

    python应用之如何使用Python发送通知到微信

    现在通过发微信信息来做消息通知和告警已经很普遍了,下面这篇文章主要给大家介绍了关于python应用之如何使用Python发送通知到微信的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-03-03
  • 提升Python Scrapy库数据采集速度实现高效爬虫

    提升Python Scrapy库数据采集速度实现高效爬虫

    Scrapy是一个强大而灵活的Python爬虫框架,被广泛用于数据采集、网站抓取和网络爬虫开发,本文将深入介绍Scrapy的功能和用法,并提供丰富的示例代码,帮助更好地理解和应用
    2023-11-11
  • python3 re返回形式总结

    python3 re返回形式总结

    在本篇文章里小编给大家整理了关于python3 re返回形式,对此有兴趣的朋友们可以学习参考下。
    2020-11-11
  • Python爬虫爬取ts碎片视频+验证码登录功能

    Python爬虫爬取ts碎片视频+验证码登录功能

    这篇文章主要介绍了Python爬虫爬取ts碎片视频+验证码登录功能,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • python 获取字符串MD5值方法

    python 获取字符串MD5值方法

    今天小编就为大家分享一篇python 获取字符串MD5值方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • python3.7.2 tkinter entry框限定输入数字的操作

    python3.7.2 tkinter entry框限定输入数字的操作

    这篇文章主要介绍了python3.7.2 tkinter entry框限定输入数字的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05

最新评论