关于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数据处理csv的应用小结

    浅谈Python数据处理csv的应用小结

    这篇文章主要介绍了Python数据处理csv的简单应用,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-01-01
  • 基于Python实现条形码图片识别程序

    基于Python实现条形码图片识别程序

    这篇文章主要为大家详细介绍了如何基于Python实现一个简单的条形码图片识别程序,可以视频图片中的条形码,感兴趣的小伙伴可以跟随小编学习一下
    2023-09-09
  • 一文带你重温一下Python的对象模型

    一文带你重温一下Python的对象模型

    在面向对象的理论中,有两个核心的概念:类和实例。在 Python 里面,类和实例都是对象,也就是所谓的类对象和实例对象。本文主要来大家重温一下Python对象模型的相关知识,感兴趣的可以了解一下
    2023-04-04
  • Python中请使用isinstance()判断变量类型

    Python中请使用isinstance()判断变量类型

    这篇文章主要介绍了Python中请使用isinstance()判断变量类型,本文先是给出了isinstance函数判断变量类型的例子,并对isinstance 和 type的区别做了讲解,需要的朋友可以参考下
    2014-08-08
  • Python KMeans聚类问题分析

    Python KMeans聚类问题分析

    这篇文章主要为大家详细介绍了Python KMeans聚类问题,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-02-02
  • 在python中创建表格的两种方法实例

    在python中创建表格的两种方法实例

    Python 是一种解释型、面向对象、动态数据类型的高级程序设计语言,下面这篇文章主要给大家介绍了关于如何在python中创建表格的两种方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-01-01
  • Python中tkinter+MySQL实现增删改查

    Python中tkinter+MySQL实现增删改查

    这篇文章主要介绍了Python中tkinter+MySQL实现增删改查,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • Python基于argparse与ConfigParser库进行入参解析与ini parser

    Python基于argparse与ConfigParser库进行入参解析与ini parser

    这篇文章主要介绍了Python基于argparse与ConfigParser库进行入参解析与ini parser,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2021-02-02
  • Python基于traceback模块获取异常信息

    Python基于traceback模块获取异常信息

    这篇文章主要介绍了Python基于traceback模块获取异常信息,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • python读文件逐行处理的示例代码分享

    python读文件逐行处理的示例代码分享

    python读文件逐行处理的示例代码分享,大家参考使用吧
    2013-12-12

最新评论