文本进度条
----采用字符串方式打印可以动态变化的文本进度条
——进度条需要能在一行中逐渐变化
如何获得文本进度条的变化时间
——采用sleep()模拟一个持续的进度
文本进度条的简单开始
#TextProBarv1.py
import time
scale=10
print("-----执行开始-----")
for i in range(scale+1)
a='*'*i
b='.'*(scale-i)
c=(i/scale)*100
print("{:^3.0f}%[{}->{}]".format(c,a,b))
time.sleep(0.1)
print("-----执行结束------")
解释:
文本进度条的单行动态刷新
他能够在每一行中根据程序的进度,不断的显示文本进度条的信息,但是不换行
刷新的本质
就是用后打印的字符信息覆盖之前信息
例如:之前出现的是10,然后第二次出现的是20,那么刷新后就是20,20会替代10出现在原来的位置上
单行刷新要求i我们不能换行,因为换行后之前的信息不能被修改。
所以要求我们 print()需要被控制,
要能退回,打印后光标退回到之前的位置\r
刷新的关键是\r
百分数的输入:
#Text.py
import time
for i in range (101):
print("{:3}")
完整效果的文本进度条
#TextProBar.py
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,'-'))
之前一直没有成功,原因竟然是运行地方不对,之前一直是在文本中进行的,这个是在命令提示符中进行的,大家一定要谨记,加油