原文链接:http://www.juzicode.com/python-note-tqdm
在安装Python库文件的时候我们经常可以看到这种进度条:

其实Python库中就自带了现成的工具库——tqdm。
tqdm读起来比较拗口,它是从“进程”的阿拉伯语taqaddum简化而来。
安装tqdm
使用pip命令安装:
pip install tqdm
基本功能
最简单的用法就是传入一个可迭代对象给tqdm()函数,常用的可迭代对象可以是列表、元组等等,使用for循环等场景下就能打印出进度条来,我们来看一个最简单的例子:
# www.juzicode.com
# 公众号: 桔子code/juzicode
import time
from tqdm import tqdm
a = ['j','u','z','i','c','o','d','e','.','c','o','m']
for i in tqdm(a):
time.sleep(0.2)
运行结果:

还可以使用range()方法构造的可迭代对象传入给tqdm()函数,在下面这个例子中,我们在每循环一次增加打印了一次换行,就可以看到“阶梯”状的进度条:
# www.juzicode.com
# 公众号: 桔子code/juzicode
import time
from tqdm import tqdm
for i in tqdm(range(20)):
time.sleep(0.1)
print()
运行结果:

设置前缀
tqdm()函数会返回一个<class ‘tqdm.std.tqdm’>的实例,用这个实例的 set_description()方法,可以在进度条前增加显示的字符,从而增加打印的可读性:
# www.juzicode.com
# 公众号: 桔子code/juzicode
import time
from tqdm import tqdm
a = ['j','u','z','i','c','o','d','e','.','c','o','m']
bar = tqdm(a)
for c in bar:
time.sleep(0.25)
bar.set_description("目前已完成: %s" % c)
运行结果:


除了前面介绍的方法,还可以使用tqdm.auto子模块下的tqdm.write()方法设置前缀,直接看例子:
# www.juzicode.com
# 公众号: 桔子code/juzicode
import time
from tqdm.auto import tqdm, trange
for i in trange(20):
time.sleep(0.1)
tqdm.write("已完成:%i" % i)

tqdm(range())简便写法
在前面介绍的例子中传入的range()实例,还可以直接简写为 tqdm(range(20)) ,当然在import的时候也需要做相应的修改:
import time
from tqdm import trange
for i in trange(20):
time.sleep(0.1)
tqdm还是西班牙语 (te quiero demasiado ) 的简写,你知道它是什么含义吗。