Python中如何显示程序进度条¶
来源:Python中如何显示程序进度 (2018-09-17)
一个好的脚本或者程序要能够直观的显示出当前的进度,就像你在Windows上拷贝一个文件,会显示已经完成了多少,还剩下多少,而不是呆呆的看着屏幕等待。下面就介绍几种常用的为脚本添加进度条的方法。
1、最简单的方法
依次打印出当前进度
import time
n = 100
for i in range(n):
time.sleep(0.1)
if(i+1)%10 == 0:
print(i+1)
效果如下:
但是这种方法有个缺点,就是容易被自己的进度刷屏。
2、只显示当前进度,避免刷屏
在print的时候加上”\r”,这样就可以在同一个地方显示当前进度,而不会被刷屏。
import time
n = 100
for i in range(n):
time.sleep(0.1)
if(i + 1)%10 == 0:
print(i+1, end = "\r")
3、添加进度条
如果觉得仅仅数字显示进度不够美观,那么可以添加图形进度条
import sys,time
#定义一个进度条
def process_bar(num, total):
rate = float(num)/total
ratenum = int(100*rate)
r = '\r[{}{}]{}%'.format('*'*ratenum,' '*(100-ratenum), ratenum)
sys.stdout.write(r)
sys.stdout.flush()
i,n =0,100
for i in range(n):
time.sleep(0.01)
process_bar(i+1,n)
效果如下:
这种方式实质上是每次重新输出一次进度,并且通过 “\r”覆盖原来的进度条。”\r”的作用是回到行首,不过在本人测试中似乎有一点小bug,就是当终端宽度不够时,回到行首就变成了另起一行,就会出现被进度条刷屏的问题。
4、使用tqdm模块
首先是安装该模块,然后运行即可
import time
from tqdm import tqdm
for i in tqdm(range(100)):
time.sleep(0.05)
效果如下:
5、使用progress模块
progress模块提供了各种各样的进度条样式。并且能够自定义一些参数
import time
from progress.bar import Bar
#可以通过fill设置进度条填充符号,默认“#”
#可以通过suffix设置成百分比显示
bar = Bar("Loading", fill='$', max = 100, suffix = '%(percent)d%%')
for i in bar.iter(range(100)):
time.sleep(0.01)
你还可以设置其他形式的进度条,如下:
==== THE END ====