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代码加个进度条的主要内容,如果未能解决你的问题,请参考以下文章

tqdm:Python 进度条

python库笔记:tqdm(python进度条)

Python 第三方库 进度条模块 tqdm的使用方法

在mini-batch训练中使用tqdm来创建进度条

Python进度条tqdm的用法

pqdm 是 tqdm 和 concurrent.futures 的 wrapper | 一个小而美的 Python 并行计算库 | 实现多进程显示进度条的优雅方案