【进度条tqdm】python项目中告别丑陋的print伪进度条

在Python开发中,进度条是提高用户体验和可视化操作的重要组成部分。本文将为你介绍热门的Python进度条库tqdm,详细解释常见的使用场景&方法,同时提供代码示例。

1. tqdm库

tqdm是一个简单易用且功能强大的进度条库。首先,你需要使用以下命令安装它:

pip install tqdm

基本用法:

for item in tqdm(range(10), desc="执行进度", position=0, smoothing=0):
    time.sleep(0.1)  # 模拟任务执行
执行进度:  40%|██▏    | 4/10 [00:00<00:00,  8.35it/s]

tqdm库支持的主要参数如下:

  1. iterable(必需): 要迭代的可迭代对象,例如range对象、列表、文件对象等。

  2. desc 设置进度条前缀的描述文本。

  3. total 指定可迭代对象的总数,用于计算进度百分比。

  4. leave 控制进度条完成后是否保留在控制台,如果设置为True,则进度条完成后保留,否则消失。

  5. position 指定进度条的位置,可以是整数或者字符串(“t” 表示顶部,“b” 表示底部,或者具体的行数)。

  6. unit 指定进度条的单位,例如"item"、"byte"等。

  7. unit_scale 控制单位的缩放,设置为True时,根据进度自动缩放单位。

  8. dynamic_ncols 动态调整进度条的宽度。

  9. bar_format 自定义进度条的格式,可以包含各种信息,如当前进度、总数、百分比等。

  10. miniters 设置最小更新间隔,以防止更新过于频繁。

  11. smoothing 设置平滑度,0表示无平滑,1表示完全平滑。

  12. ncols 指定进度条的宽度。

  13. ascii 设置使用ASCII字符显示进度条。

  14. disable 如果设置为True,则禁用进度条。

  15. initial 设置初始值。

  16. file 将进度条输出到指定文件,而不是控制台。

  17. lock_args 指定用于锁定的参数。

  18. bar_format 设置进度条的格式。

这些参数提供了丰富的功能,允许你根据具体需求来定制和优化进度条的外观和行为。

tqdm高级特性&使用场景

2.文件读取

from tqdm import tqdm
import time

file_path = "example.txt"

# 示例:文件读取过程的进度条
with open(file_path, "r") as file:
    lines = file.readlines()
    for line in tqdm(lines, desc="Reading", unit="line"):
        time.sleep(0.1)  # 模拟处理每行的时间

3.嵌套进度条

from tqdm import tqdm
import time

# 示例:嵌套的进度条
outer_bar = tqdm(total=10, desc="Outer Bar")

for i in range(10):
    inner_bar = tqdm(total=5, desc=f"Inner Bar {i}", leave=False)
    
    for j in range(5):
        time.sleep(0.1)  # 模拟任务执行
        inner_bar.update(1)
    
    inner_bar.close()
    outer_bar.update(1)

outer_bar.close()

4.使用position参数

from tqdm import tqdm
import time

# 示例:使用position参数设置进度条位置
for i in tqdm(range(5), desc="Left", position=0):
    time.sleep(0.1)  # 模拟任务执行

for i in tqdm(range(5), desc="Right", position=12):
    time.sleep(0.1)  # 模拟任务执行

position的数字12代表,在距离控制台光标所在的起始行往下数,第12行的位置显示进度条。

5.自定义进度条风格

# 控制括号,修改显示样式
for i in tqdm(range(10), desc="执行进度", bar_format="{l_bar}{bar}| {n_fmt}/{total_fmt} [{elapsed}<{remaining}, {rate_fmt}{postfix}]"):
    time.sleep(0.1)  # 模拟任务执行

文章内容已同步微信公众号“一个努力奔跑的snail”,获取更多爬虫案例、工具源码,后台回复相关关键词即可获取。

你可能感兴趣的:(python,python,tqdm)