关于sys.stdout和print的区别详解
2019-12-06 12:09
826 查看
一、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中 print() 与 sys.stdout.write() 区别
- python3 中print函数参数详解,print(*values, sep=' ', end='\n', file=sys.stdout, flush=False)中参数介绍
- 关于SysinternalsSuite全部工具【详解】
- Linux——关于LUN和存储卷的区别详解
- 关于Sequelize连接查询时inlude中model和association的区别详解
- PHP echo,print,printf,sprintf函数之间的区别与用法详解
- oracle 中关于当前的sysdate,sysstimestap,current_date,curent_timestamp 区别
- 关于Sequelize连接查询时inlude中model和association的区别详解
- 关于raw_input()和sys.stdin.readline()的区别
- Python的stdout.write和print的区别
- Python第十天 print >> f,和fd.write()的区别 stdout的buffer 标准输入 标准输出 从控制台重定向到文件 标准错误 重定向 输出流和输入流 捕获sys.exit()调用
- oracle 中关于当前的sysdate,sysstimestap,current_date,curent_timestamp 区别
- 详解python中 os._exit() 和 sys.exit(), exit(0)和exit(1) 的用法和区别
- 关于PrintWriter中的print与println方法的区别
- 关于raw_input()和sys.stdin.readline()的区别
- [Python]print vs sys.stdout.write
- php中print(),print_r(),echo()的区别详解
- Java中关于int和Integer的区别详解
- 关于raw_input( )和sys.stdin.readline( )的区别
- python sys.sdout.write 和print 区别