如何统计顶级目录总文件数(含子目录及空目录)
解决顶级目录总文件数统计问题
问题说明
需要统计目标路径下所有顶级目录包含的总文件数(含嵌套子目录内的文件),包括文件数为0的目录,输出格式为目录名: 文件总数。
原代码问题分析
你提供的代码出现每个目录文件数显示为1的原因有两点:
- 路径判断错误:
os.listdir(DOCUMENTS)返回的是目录/文件名的相对字符串,直接用os.path.isdir(directory)判断的是当前工作目录下的该名称是否为目录,而非DOCUMENTS路径下的目标项,导致部分真实目录未被识别。 - 变量初始化遗漏:
filecount仅在if os.path.isdir(directory)块内初始化,当遇到非目录项时,print语句会复用上一次循环的filecount值,造成结果错误。
修正后的代码
import os # 替换为你的目标根路径 DOCUMENTS = "/your/target/root/path" for entry_name in os.listdir(DOCUMENTS): # 拼接完整路径,确保判断和遍历的是目标路径下的项 entry_full_path = os.path.join(DOCUMENTS, entry_name) # 仅处理顶级目录 if os.path.isdir(entry_full_path): total_files = 0 # 遍历目录下所有子目录和文件,累加文件数 for _, _, files in os.walk(entry_full_path): total_files += len(files) else: # 跳过非目录项(如果需要统计文件可以调整,这里按需求只处理目录) continue # 按要求格式输出 print(f"{entry_name}: {total_files}")
输出示例
- top-level-dir1: 234
- top-level-dir2: 0
- top-level-dir3: 5
内容的提问来源于stack exchange,提问作者Kilgore Trout
相关产品推荐
相关产品推荐

