如何用Python写个文本进度条?
【摘要】 昨天我们学到了Python中Time库的使用,今天就可以开始用Time库完成进度条的操作啦!进度条-反映某一事件的运行状态文本进度条:采用字符串方式打印可以动态变化的文本进度条,且在一行中能够逐渐变化。其实学过进度条的就知道进度条其实只是一个模拟化的持续进程,但也在一定程度上能够反映运行的一个进度情况。在这里我们需要用到Time库中的sleep函数,用它来模拟持续化进程。比如下面这段代码就演...
昨天我们学到了Python中Time库的使用,今天就可以开始用Time库完成进度条的操作啦!
进度条-反映某一事件的运行状态
文本进度条:采用字符串方式打印可以动态变化的文本进度条,且在一行中能够逐渐变化。
其实学过进度条的就知道进度条其实只是一个模拟化的持续进程,但也在一定程度上能够反映运行的一个进度情况。
在这里我们需要用到Time库中的sleep函数,用它来模拟持续化进程。
比如下面这段代码就演示了一个简单的进度条实例:
import time #调用Time库
scale = 10 #定义文本进度条大概的宽度为10
print("------执行开始------")
for i in range(scale+1): #引入一个for循环
a='*'*i #动态变化的*
b='.'*(scale-i) #动态变化的.
c=(i/scale)*100 #输出进度条的百分比
print("{:^3.0f}%[{}-{}]".format(c,a,b))
time.sleep(0.1)
print("------执行结束------")
运行结果:
上面提到的是简单的文本进度条,其实用得更多还是单行动态刷新的文本进度条,即会在显示文本进度条时即时刷新——用后打印的字符信息覆盖之前打印的信息。
-
单行动态刷新的关键是\r。
-
刷新的本质是用后打印的字符覆盖之前的字符;
-
且不能换行:在用print时控制输出;
-
要能回退:打印后光标退回到之前的位置\r。
初始版本如下:
import time
for i in range(101):
print("\r{:3}%".format(i),end=" ") #\r让光标返回到行首;end=" "让光标不进行换行操作
time.sleep(0.1)
运行结果(两张为连续变化):
最终版本:
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=' ')
#增加了dur变量,用来记录打印文本进度条所消耗的时间。
time.sleep(0.1)
print("\n"+"执行结束".center(scale//2,'-'))
运行结果(两张为连续变化):
未完待续...
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)