文本进度条的动态刷新实际是在同一个位置一直进行覆盖输出,所以可以用\r使光标回到行首进行覆盖输出即可。
代码参考:
import time
scale = 50
print("执行开始".center(scale//2, '-'))
start = time.perf_counter()
for i in range(scale+1):
a = '*' * i
b = '.' * (scale - i)
c = (i/scale)*100
dur = time.perf_counter() - start
print("\r{:^3.0f}%[{}->{}]{:.2f}s".format(c, a, b, dur),end = '')
time.sleep(0.1)
print("\n"+"执行结束".center(scale//2, '-'))
注释:
1、.center()函数用来填充居中后的空格
2、end=’'表示不换行
3、python自带的idle会屏蔽掉\r,会一个接一个输出,不会实现动态刷新。用cmd即可;