安装 tqdm
tqdm 的安装非常简单,只需要使用 pip 命令即可,打开你的终端或命令行工具(Windows 是 CMD 或 PowerShell,macOS/Linux 是 Terminal),然后输入以下命令:

pip install tqdm
验证安装
安装完成后,你可以通过在 Python 解释器中导入它来验证是否安装成功:
>>> from tqdm import tqdm
>>> print("tqdm 安装成功!")
tqdm 安装成功!
如果没有任何错误提示,就说明安装成功了。
基本使用方法
tqdm 的设计非常巧妙,它只需要将任何可迭代对象(如列表、range 等)包装起来,就能立刻生成一个进度条。

示例 1:用于 for 循环
这是最常见的用法,假设你想遍历一个包含 100 个元素的列表:
from tqdm import tqdm
import time
# 创建一个包含100个元素的列表
my_list = range(100)
# 使用 tqdm 包装这个列表
for item in tqdm(my_list):
# 模拟一些工作
time.sleep(0.01)
运行这段代码,你会在终端看到一个动态的进度条,类似这样:
100%|██████████| 100/100 [00:01<00:00, 98.04it/s]
进度条解读:
100%: 当前进度百分比。- 进度条本身,表示完成的程度。
100/100: 已完成的数量 / 总数量。[00:01<00:00]: 已用时间 / 预估剩余时间。04it/s: 每秒处理的迭代次数(iteration per second)。
示例 2:结合 pandas
如果你在使用 pandas 进行数据处理,tqdm 可以无缝集成,让你在处理大型 DataFrame 时也能看到进度。

确保你已经安装了 pandas:
pip install pandas
可以这样使用:
import pandas as pd
from tqdm import tqdm
# 创建一个包含10万行的示例DataFrame
df = pd.DataFrame({'col': range(100000)})
# 启用 pandas 的 tqdm 支持
tqdm.pandas(desc="Processing DataFrame")
# 使用 .progress_apply() 替代 .apply()
df['col_squared'] = df['col'].progress_apply(lambda x: x**2)
print(df.head())
这里的 desc="Processing DataFrame" 是用来给进度条添加描述文本的,让输出更清晰。
进阶用法和参数
tqdm 提供了很多有用的参数,可以让你自定义进度条的外观和行为。
示例 3:自定义描述和单位
from tqdm import tqdm
import time
for i in tqdm(range(100), desc="下载文件", unit="KB"):
time.sleep(0.02)
输出:
下载文件: 100%|██████████| 100/100 [00:02<00:00, 40.00KB/s]
desc: 进度条前端的描述文本。unit: 进度条的单位,会显示在总数量之后。
示例 4:手动控制进度
循环中的迭代次数是动态的或者不确定的,这时,你可以使用 tqdm 的手动更新模式。
from tqdm import tqdm
import time
# 创建一个进度条,总工作量设为100
pbar = tqdm(total=100, desc="手动控制进度")
# 模拟不确定的循环
for i in range(100):
# ... 这里是一些复杂的操作 ...
time.sleep(0.01)
# 手动更新进度
pbar.update(1) # 每次增加1
# 完成后记得关闭进度条
pbar.close()
total: 设置总工作量。pbar.update(n): 手动增加n个单位的进度。- `pbar.close()非常重要!** 手动模式下的进度条必须被关闭,否则可能会导致终端状态混乱。
示例 5:嵌套进度条
当你有双层循环时,tqdm 也能很好地处理嵌套进度条。
from tqdm import tqdm
import time
# 外层进度条
for i in tqdm(range(5), desc="外层任务"):
# 内层进度条
for j in tqdm(range(100), desc=f" 内层任务 {i+1}", leave=False):
time.sleep(0.01)
leave=False: 当内层循环结束后,不清除内层进度条,这样外层进度条就能保持清晰。
其他优秀的进度条库
虽然 tqdm 是最主流的选择,但也有一些其他优秀的库,各有特色:
-
rich: 一个功能极其强大的库,不仅能创建漂亮的进度条,还能提供彩色输出、表格、markdown 等丰富的终端功能,如果你追求更炫酷的视觉效果,rich是绝佳选择。pip install rich
from rich.progress import Progress import time with Progress() as progress: task = progress.add_task("[cyan]下载中...", total=100) while not progress.finished: progress.update(task, advance=1) time.sleep(0.02) -
alive-progress: 专注于提供非常华丽、带有动画效果的进度条,视觉效果极佳。pip install alive-progress
from alive_progress import alive_bar import time with alive_bar(100, title='华丽的进度条') as bar: for i in range(100): time.sleep(0.02) bar()
| 库 | 特点 | 适用场景 |
|---|---|---|
tqdm |
简单、轻量、兼容性好,是社区标准。 | 99% 的日常使用场景,特别是与 pandas 结合时。 |
rich |
功能强大,进度条美观,还能做其他终端美化。 | 需要高质量终端输出、日志、表格等复杂应用。 |
alive-progress |
动画效果华丽,视觉冲击力强。 | 对用户体验要求极高,希望进度条非常酷炫的项目。 |
给你的建议:
- 初学者或日常使用:直接安装并使用
tqdm,它足够好用且文档齐全。 - 想提升项目体验:可以尝试
rich,它不仅能做进度条,还能让你的整个命令行工具变得更专业。 - 追求极致视觉效果:可以试试
alive-progress。
希望这个详细的指南能帮助你顺利地在 Python 中使用进度条!
