flush()的作用是刷新缓冲区。
缓冲区的刷新有三种:1,缓冲区满自动刷新;2,flush刷新;3,程序结束自动刷新
import time,sys
def progress_bar(i):
print("\r",end="") # 输出位置回到行首
# 显示进度百分比,并同时显示进度1/2(可以自己调节)个数的进度条符号:▋
print("处理进度:{}%:".format(i),"▋" * (i//10),end="")
sys.stdout.flush()
time.sleep(0.05)
print("#############希望不出错#############")
for i in range(0,101):
progress_bar(i)
result:
#############希望不出错#############
处理进度:100%: ▋▋▋▋▋▋▋▋▋▋
当我们打印一些字符时,并不是调用print函数后就立即打印的。一般会先将字符送到缓冲区,然后再打印。这就存在一个问题,如果你想等时间间隔的打印一些字符,但由于缓冲区没满,不会打印。就需要采取一些手段。如:每次打印后强行刷新缓冲区。
如有不妥和改进,欢迎私信或评论指出。