![dc237b94fff444f9cd3d75a13c88a71f.png](https://i-blog.csdnimg.cn/blog_migrate/8c2b9e0128a1be5c0160bad82e2cd675.png)
点击上方「蓝字」关注"程序员Bob"
每天与你不见不散!
![eae2e7b3b34af6529dc72026fcc09e8c.gif](https://i-blog.csdnimg.cn/blog_migrate/d18f93ec4c1b564291b83fbf40a31375.gif)
每日一句,送给最珍贵的你:
知行合一!
往日推荐:Python字符串及Time库介绍
程序员Bob(ID:gh_8a1a1530d0bf) 第218次推文 图源:小张
昨天我们学到了Python中Time库的使用,今天就可以开始用Time库完成进度条的操作啦!
进度条-反映某一事件的运行状态
文本进度条:采用字符串方式打印可以动态变化的文本进度条,且在一行中能够逐渐变化。
其实学过进度条的就知道进度条其实只是一个模拟化的持续进程,但也在一定程度上能够反映运行的一个进度情况。
在这里我们需要用到Time库中的sleep函数,用它来模拟持续化进程。
比如下面这段代码就演示了一个简单的进度条实例:
import time #调用Time库scale = 10 #定义文本进度条大概的宽度为10print("------执行开始------")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 timefor i in range(101): print("\r{:3}%".format(i),end=" ") #\r让光标返回到行首;end=" "让光标不进行换行操作 time.sleep(0.1)
运行结果(两张为连续变化):
最终版本:
import timescale = 50print("执行开始".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,'-'))
运行结果(两张为连续变化):
未完待续...
往期推荐:
Python字符串及Time库介绍
2020-09-03
![d223b5d3e975dda0a62f769e72674787.png](https://i-blog.csdnimg.cn/blog_migrate/7a2cb9cc9d0acfbf5fb6027fd547dfef.jpeg)
如何一个月过英语四级?
2020-09-02
![c1c5de12efb79c2e6c052fdc5a65b9fc.png](https://i-blog.csdnimg.cn/blog_migrate/e4041c092594367527b23963e0b52e6a.jpeg)
八月碎碎念 || 每一次尝试,我们都得努力坚持
2020-08-31
![b840bbaefbc57e3382bfc913c2cf27e1.png](https://i-blog.csdnimg.cn/blog_migrate/a878c338417c64d1536fa8f7ae57d196.jpeg)
为你,千千万万遍.
关注程序员Bob公众号,与你一起终生学习
![e95faf88dea21398150d976a8c0b417e.png](https://i-blog.csdnimg.cn/blog_migrate/2ad95c3c2a47320b2436dadf80855ec9.png)
写留言