You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在循环中集成tqdm进度条并解决重复输出多个进度条问题

问题原因

tqdm实例嵌套在os.walk的循环内,os.walk每进入一个子目录就会生成一个新的tqdm进度条,遍历多少个目录就会输出多少条进度条,因此出现大量重复的进度条内容。

解决方案1:先收集全量文件再初始化进度条(最简便)

提前把所有要处理的文件路径收集到一个列表里,再用tqdm包裹这个列表迭代,全程只会生成一个进度条:

from tqdm import tqdm
from time import sleep
import os

all_files = []
# 第一步先收集所有文件路径
for root, dirs, files in os.walk(myFile):
    for file in files:
        all_files.append(os.path.join(root, file))

# 第二步迭代所有文件,只初始化一次tqdm
for item in tqdm(all_files, total=len(all_files)):
    sleep(0.01)
    # 后续业务逻辑,直接处理item即可

解决方案2:手动更新进度(适合文件量极大的场景)

只初始化一次tqdm实例,每处理完一个文件就手动更新进度,不需要提前收集所有文件占用内存:

from tqdm import tqdm
from time import sleep
import os

totalFiles = 0
# 先统计总文件数
for base, dirs, files in os.walk(myFile):
    totalFiles += len(files)

# 全局只初始化一次tqdm
with tqdm(total=totalFiles) as pbar:
    for root, dirs, files in os.walk(myFile):
        for item in files:
            sleep(0.01)
            # 后续业务逻辑
            pbar.update(1) # 每处理一个文件更新一次进度

内容的提问来源于stack exchange,提问作者Pelide

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 16:09:03