gpt4 book ai didi

python - 在函数内的 for 循环上使用 tqdm 来检查进度

转载 作者:行者123 更新时间:2023-11-28 20:18:44 29 4
gpt4 key购买 nike

我正在使用 for 循环遍历目录树中的一大组文件。

在这样做的同时,我想通过控制台中的进度条监控进度。因此,我决定为此目的使用 tqdm。

目前,我的代码如下所示:

for dirPath, subdirList, fileList in tqdm(os.walk(target_dir)):
sleep(0.01)
dirName = dirPath.split(os.path.sep)[-1]
for fname in fileList:
*****

输出:

Scanning Directory....
43it [00:23, 11.24 it/s]

所以,我的问题是它没有显示进度条。我想知道如何正确使用它并更好地了解它的工作原理。另外,如果有任何其他 tqdm 的替代品可以在这里使用。

最佳答案

除非您知道“完成”的含义,否则您无法显示完成百分比

os.walk 运行时,它不知道最终要迭代多少个文件和文件夹:os.walk 的返回类型没有__len__。它必须一直向下查看目录树,枚举所有文件和文件夹,以便对它们进行计数。换句话说,os.walk 必须将所有工作执行两次才能告诉您它将生产多少项目,这是低效的。

如果您执意要显示进度条,则可以将数据假脱机到内存列表中:list(os.walk(target_dir))。我不推荐这个。如果您正在遍历一个大目录树,这可能会消耗大量内存。更糟糕的是,如果 followlinksTrue 并且您有一个循环目录结构(子级链接到他们的父级),那么它可能会永远循环直到您用完 RAM。

关于python - 在函数内的 for 循环上使用 tqdm 来检查进度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35969433/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com