在 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
。
根据你的需求选择合适的工具即可!