You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 如何递归统计指定目录下的文件和文件夹总数量

统计指定目录文件与文件夹总数的实现方案

首先纠正你对os.walk()的认知误区:它本身支持递归遍历所有层级的子目录,你之前只能统计根目录内容属于用法错误。下面给你两种不需要额外创建全量列表、内存占用极低的高效实现方案:

方案1:使用os.walk实现

不需要存储所有路径,每次迭代直接累加当前层级的目录、文件数量即可,大目录下性能表现优异:

import os

def count_by_oswalk(src: str) -> tuple[int, int]:
    dir_count = 0
    file_count = 0
    for root, dirs, files in os.walk(src):
        dir_count += len(dirs)
        file_count += len(files)
    # 返回值顺序:总文件夹数、总文件数
    return dir_count, file_count

方案2:使用pathlib实现

仅遍历一次路径迭代器即可完成计数,完全不需要创建列表存储所有路径对象,代码可读性更高,符合现代Python编码习惯:

from pathlib import Path

def count_by_pathlib(src: str) -> tuple[int, int]:
    dir_count = 0
    file_count = 0
    # **/* 表示递归匹配所有子层级的路径,返回的是迭代器不会预加载全量数据
    for p in Path(src).glob("**/*"):
        if p.is_dir():
            dir_count += 1
        else:
            file_count += 1
    return dir_count, file_count

补充用法说明

  • 如果只需要统计所有路径的总数量,不需要区分文件和文件夹,一行代码即可实现:total = sum(1 for _ in Path(src).glob("**/*"))
  • 如果你需要过滤隐藏文件/文件夹,在判断条件中补充not p.name.startswith(".")即可
  • 两者性能差异极小,Windows系统下大目录遍历os.walk速度稍快,跨平台场景下pathlib的写法兼容性更强

内容的提问来源于stack exchange,提问作者uriandwubber

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 05:39:03