前言
在编程中,尤其是处理长时间运行的任务时,了解程序的进度是非常重要的。Python中有一个非常实用的库,名为 tqdm
,它能够以极简的方式帮助我们快速创建进度条。本文将向初学者介绍如何在Python中使用 tqdm
库来制作进度条。
1. tqdm简介
tqdm
是一个快速、扩展性强的Python库,用于在长循环中添加进度提示信息。它可以在几秒钟内轻松集成到代码中,且对代码的侵入性极小。
1.1 安装tqdm
在使用 tqdm
之前,需要先进行安装。通过pip可以轻松安装:
pip install tqdm
2. 基本用法
2.1 在for循环中使用tqdm
tqdm
最常见的用法是将其直接用于for循环。这可以通过将 tqdm()
函数包裹在任何可迭代的对象上来实现。
from tqdm import tqdm
import time
# 模拟的任务列表
tasks = range(10)
for task in tqdm(tasks):
# 模拟任务执行时间
time.sleep(0.5)
这段代码将创建一个包含10个任务的简单进度条。 time.sleep(0.5)
用于模拟每个任务的执行时间。
2.2 手动更新进度条
除了自动迭代外, tqdm
还允许手动控制进度条。这在需要更精细控制进度条的场景下非常有用。
from tqdm import tqdm
import time
# 初始化进度条,设置总数为10
progress_bar = tqdm(total=10)
# 执行任务
for i in range(10):
time.sleep(0.5)
# 更新进度条
progress_bar.update(1)
# 关闭进度条
progress_bar.close()
3. 进度条定制
tqdm
提供了许多定制选项,可以改变进度条的外观和信息。
3.1 设置描述信息
可以通过 desc
参数为进度条添加描述信息。
for task in tqdm(tasks, desc="Processing"):
time.sleep(0.5)
3.2 自定义进度条长度
使用 ncols
参数可以自定义进度条的长度。
for task in tqdm(tasks, ncols=100):
time.sleep(0.5)
3.3 改变进度条样式
使用不同的字符来改变进度条的样式。
for task in tqdm(tasks, bar_format="{l_bar}{bar}| {n_fmt}/{total_fmt}"):
time.sleep(0.5)
4. 在不同环境中使用tqdm
tqdm
不仅可以在命令行中使用,也可以在Jupyter Notebook等环境中使用。
4.1 在Jupyter Notebook中使用
在Jupyter Notebook中,可以使用 tqdm.notebook.tqdm
来获取更好的交互体验。
from tqdm.notebook import tqdm
for task in tqdm(tasks):
time.sleep(0.5)
5. 实战演练
下面通过一个实战例子,演示如何在实际项目中使用 tqdm
。
例子:文件下载进度条
假设我们需要下载一些文件,并希望显示下载进度。
import requests
from tqdm import tqdm
# 文件URL
url = "https://example.com/file.zip"
response = requests.get(url, stream=True)
# 获取文件总大小
total_size = int(response.headers.get('content-length', 0))
block_size = 1024 # 1 Kibibyte
with open("file.zip", "wb") as file, tqdm(
total=total_size, unit='iB', unit_scale=True) as bar:
for data in response.iter_content(block_size):
file.write(data)
bar.update(len(data))