在 Python 中,可以使用多种方式显示循环的进度条。以下是几种常见的方法:
1. 使用 tqdm 库
tqdm 是一个非常流行的库,可以轻松地为循环添加进度条。
安装 tqdm
pip install tqdm
示例代码
from tqdm import tqdm
import time
# 示例:一个耗时循环
for i in tqdm(range(100)):
time.sleep(0.1) # 模拟耗时操作
输出效果
100%|████████████████████████████████████████| 100/100 [00:10<00:00, 9.90it/s]
2. 使用 rich 库
rich 是一个功能强大的库,支持漂亮的进度条和其他丰富的终端输出。
安装 rich
pip install rich
示例代码
from rich.progress import track
import time
# 示例:一个耗时循环
for i in track(range(100)):
time.sleep(0.1) # 模拟耗时操作
输出效果
[==================================================] 100%
3. 使用 progressbar2 库
progressbar2 是另一个用于显示进度条的库,功能丰富且灵活。
安装 progressbar2
pip install progressbar2
示例代码
import progressbar
import time
# 示例:一个耗时循环
bar = progressbar.ProgressBar(max_value=100)
for i in range(100):
time.sleep(0.1) # 模拟耗时操作
bar.update(i + 1)
输出效果
100% (100 of 100) |########################| Elapsed Time: 0:00:10 Time: 0:00:10
4. 手动实现简单的进度条
如果你不想依赖第三方库,可以手动实现一个简单的进度条。
示例代码
import time
import sys
total = 100
for i in range(total):
time.sleep(0.1) # 模拟耗时操作
progress = (i + 1) / total * 100
sys.stdout.write(f"\rProgress: [{'=' * int(progress // 2):<50}] {progress:.1f}%")
sys.stdout.flush()
print() # 换行
输出效果
Progress: [============================= ] 70.0%
5. 使用 alive-progress 库
alive-progress 是一个动态且美观的进度条库。
安装 alive-progress
pip install alive-progress
示例代码
from alive_progress import alive_bar
import time
# 示例:一个耗时循环
with alive_bar(100) as bar:
for i in range(100):
time.sleep(0.1) # 模拟耗时操作
bar()
输出效果
|████████████████████████████████████████| 100/100 [100%] in 10.0s (10.00/s)
6. 使用 IPython 的 widgets(适用于 Jupyter Notebook)
如果你在 Jupyter Notebook 中运行代码,可以使用 IPython 的 widgets 来显示进度条。
示例代码
from IPython.display import display
import ipywidgets as widgets
import time
progress = widgets.IntProgress(value=0, max=100)
display(progress)
for i in range(100):
time.sleep(0.1) # 模拟耗时操作
progress.value = i + 1
输出效果
在 Jupyter Notebook 中显示一个动态进度条。
总结
- 推荐使用
tqdm:简单易用,功能强大。 - 如果需要更丰富的终端输出:可以选择
rich或alive-progress。 - 手动实现:适合简单的需求,无需安装第三方库。
- Jupyter Notebook:使用
IPython的widgets。
根据你的需求选择合适的工具即可!