Python调用tqdm库在命令行输出进度条

我们经常执行计算机程序,来处理数据或任务。有 GUI 的程序,可以通过进度条实时展示处理进度。那么,命令行程序有办法也展示直观的进度条呢?

Python 第三方库 tqdm 就是专门用来展示进度条的,tqdm 是阿拉伯语进度一词 taqadum 的缩写。本节,我们一起来看如何调用 tqdm 库,来输出漂亮直观的进度条。

安装

跟其他 Python 第三方包一样,我们执行 pip 命名来安装 tqdm

1
pip install tqdm

用法

Python 程序处理数据或任务时,通常是写 for-in 循环逐个遍历。tqdm 提供了一个可迭代对象包装器,可以包装任何可迭代对象,它会在遍历迭代时实时输出进度:

1
2
3
4
5
import time
from tqdm import tqdm

for task in tqdm(range(10)):
    time.sleep(0.1)

这个例子调用 range 函数生成 10 个序号,来模拟处理 10 个数据的场景。

range 对象的长度是固定的,因此 tqdm 可以调用 len 函数获得总数,因此可以计算进度:

1
2
>>> len(range(10))
10

但有些场景,我们并不知道数据或任务的总量有多少,因而无法计算进度,只能计算处理速度:

1
2
3
4
5
import time
from tqdm import tqdm

for task in tqdm(map(int, range(10))):
    time.sleep(0.1)

这个例子,我么调用 map 函数对 range 对象进行包装,让它变成一个普通的可迭代对象,无法调用 len 获取长度。这样一来,tqdm 就无法计算执行进度,只能计算处理速度了。

【小菜学Python】系列文章首发于公众号【小菜学编程】,敬请关注:

【小菜学Python】系列文章首发于公众号【小菜学编程】,敬请关注: