from
https://blog.csdn.net/mrr1ght/article/details/80803816
一 sys.stdout的形式就是print的一种默认输出格式,等于print "%VALUE%"
-
-
# 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)
运行结果如下: