如何用tqdm同时显示文件步骤进度与基于大小的总进度占比
解决方案
要实现显示当前处理文件序号(M/N)+ 基于总文件大小的进度百分比的效果,我们可以结合tqdm的set_description方法和自定义进度条格式,具体实现如下:
from tqdm import tqdm from time import sleep # 模拟各文件大小 file_sizes = (3, 2, 1, 4) total_files = len(file_sizes) total_size = sum(file_sizes) # 自定义进度条格式:描述部分显示文件进度,后跟基于总大小的百分比 bar_format = '{desc} {percentage:3.0f}%' with tqdm(total=total_size, bar_format=bar_format) as bar: for file_num, size in enumerate(file_sizes, start=1): # 模拟文件处理耗时 sleep(size) # 更新已处理的文件大小,tqdm自动计算百分比 bar.update(size) # 更新进度条描述为当前文件序号/总文件数 bar.set_description(f'{file_num} of {total_files}')
代码说明:
- 基础参数初始化:计算总文件数
total_files和总文件大小total_size,后者作为tqdm的进度总基准。 - 自定义格式:
bar_format指定进度条显示内容,{desc}会被后续设置的描述文本替换,{percentage}由tqdm基于已处理大小/总大小自动计算。 - 循环处理文件:
- 每次处理完一个文件后,用
bar.update(size)更新已处理的总大小,触发百分比计算。 - 用
bar.set_description()动态更新进度条的描述部分,显示当前是第几个文件。
- 每次处理完一个文件后,用
运行这段代码后,输出效果将完全符合需求:
1 of 4 30% 2 of 4 50% 3 of 4 60% 4 of 4 100%
内容的提问来源于stack exchange,提问作者Lecron
相关产品推荐
相关产品推荐

