一、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博客。
Powered By python教程网 鲁ICP备18013710号
python博客 - 小白学python最友好的网站!