tqdm库,给你的Python代码加个进度条
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tqdm库,给你的Python代码加个进度条相关的知识,希望对你有一定的参考价值。
参考技术A tqdm在阿拉伯语中的意思是“进展”,是一个快速、扩展性强的进度条工具库,用户只需要封装任意的迭代器 tqdm(iterator)。在迭代器上直接使用tqdm库
trange(i) 是对tqdm(range(i)) 特殊优化过的实例。
如何使用 tqdm 在 python 中添加进度条
【中文标题】如何使用 tqdm 在 python 中添加进度条【英文标题】:how to add progress bar in python using tqdm 【发布时间】:2020-06-24 20:44:05 【问题描述】:我有一个列出文件和目录并复制所需的脚本。现在我需要添加一个进度条来显示使用tqdm包
的复制进度问题是我不知道在哪里对 tqdm 进行迭代以获得我想要的结果。
代码:
numfile = len(files)
for file in files:
full_file_name = os.path.join(dirpath, file)
if os.path.join(dirpath) == src:
if file.endswith("pdf"):
if not os.path.exists(dst2):
os.mkdir(dst2)
else:
print("the path alredy exist")
shutil.copy(full_file_name, dst2)
i+=1
elif file.endswith("docx") or file.endswith("doc"):
shutil.copy(full_file_name, dst)
j+=1
elif os.path.join(dirpath)== src2:
if file.endswith("pdf"):
shutil.copy(full_file_name, dst3)
z+=1
for z in tqdm(range(numfile)):
sleep(.1)
print("*******number of directories = ".format(len(dirnames)))
print("*******number of files = ".format(len(files)))
现在它复制文件而不是显示进度条。
我想要的是在复制时显示进度条
【问题讨论】:
all the SO answers about adding a progress bar 为什么不在第二行用 tqdm 包装文件? @MercyDude 你是什么意思? 为什么不把第二行改成“for file in tqdm(files):” 【参考方案1】:使用tqdm
跟踪外循环的进度。
for file in tqdm(files):
# Copy file
在您当前的代码中,进度条仅显示您的睡眠进度numfiles
/10s。这是没有意义的,并且每次复制文件时都会导致代码休眠numfiles
/10s。
【讨论】:
以上是关于tqdm库,给你的Python代码加个进度条的主要内容,如果未能解决你的问题,请参考以下文章
pqdm 是 tqdm 和 concurrent.futures 的 wrapper | 一个小而美的 Python 并行计算库 | 实现多进程显示进度条的优雅方案