Python递归地计算文件和目录的数量



我正在尝试获取目录中文件和文件夹的数量。我找到了os.walk((,它只对根目录执行操作。我尝试了以下操作,但我需要创建两个列表,检查它是文件还是文件夹,并对它们进行计数。

pathlib.Path(src).glob('**/*')

我找不到一种简单有效的方法来完成这样一项简单的任务。我觉得我错过了什么。有什么建议吗?

lst = [*map(lambda x: x.is_dir(), pathlib.Path(src).rglob('*'))]
sum(lst), len(lst) - sum(lst)  # number of dirs, number of files

这就是你要找的吗?

os.walk是一个生成器,您需要迭代它的结果:

{p: {"directories": len(directories),
"files": len(files)}
for p, directories, files in os.walk(root_dir)}

您可以使用os.walk()。它递归地迭代一个目录,每次迭代都返回一个目录路径以及该路径上的文件和目录数量。把它们加起来:

import os
dirs_cnt = 0
files_cnt = 0
for path,dirs,files in os.walk('.'):  # Current directory
dirs_cnt += len(dirs)
files_cnt += len(files)
print(f'Total: dirs={dirs_cnt} files={files_cnt}')

最新更新