本文主要是介绍Python3 写个“吊炸天”的进度条,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
做耗时任务时,如果在进度上,对用户没有一点提示的话,容易被当成“死机”,碰到耐心差的,就直接crtl+c了。
如果是自己调试,没那么多讲究,一行行输出日志就好了。但是,让用户使用,最好还是美观点,不是么?而且,对于Python而言,也就是“举手之劳”。
比如这两个效果:
progress:100.00% [20/20]
[####################] [20/20]
思路:
- print函数的end参数,用来控制结尾的字符,默认是’\n’,显然我们不能换行,所以改成空字符即可
- 我们想要的效果是每一次输出都覆盖掉上一次的输出,所以我们需要利用’\r’,把每次的输出位置放到一行的开头
- 剩下的就是保证对完成度百分比的计算,然后转化为百分数,或者图形输出。
上代码:
import timeTOTAL_COUNT = 20 # 计数的上限
TIME_INTERVAL = 0.5 # 时间间隔(秒)
PROGRESSBAR_LENGTH = 20 # 进度条长度# 展示数字百分比模式
def showPercentage():for i in range(TOTAL_COUNT):time.sleep(TIME_INTERVAL)# 构建百分比字符串cur_progress = (i + 1) * 1.0 / TOTAL_COUNT * 100print('\rprogress:%.2f%% [%d/%d]' % (cur_progress, i + 1, TOTAL_COUNT), end="")# 展示进度条的模式
def showProgressBar():for i in range(TOTAL_COUNT):time.sleep(TIME_INTERVAL)# 进度条填充物的长度flag_num = round((i + 1) * 1.0 / TOTAL_COUNT * PROGRESSBAR_LENGTH)# 进度条空白的长度blank_num = PROGRESSBAR_LENGTH - flag_numprint('\r[%s] [%d/%d]' % ('#' * flag_num + ' ' * blank_num, i + 1, TOTAL_COUNT), end="")if __name__ == '__main__':showPercentage()print('\n')showProgressBar()
我爱技术,更爱生活,不才有个小窝,欢迎有空来坐坐~
这篇关于Python3 写个“吊炸天”的进度条的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!