进度条工具——tqdm

原文链接: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 ) 的简写,你知道它是什么含义吗。

扩展阅读:

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注