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

Python遍历目录及其所有子目录的最优实现方法咨询

Hey there! 针对你需要实现Python目录全遍历的需求,这里有几个最优的方案,都是Python标准库自带的,不用额外装包,省心又高效:

方法1:使用 os.walk()(经典稳定款)

os.walk() 是Python里处理目录递归遍历的老牌工具,它会自动深入指定目录的每一层子文件夹,每次返回三个值:当前遍历的目录路径、当前目录下的子文件夹列表、当前目录下的文件列表,完全满足你遍历多层级目录的需求。

代码示例:

import os

def full_traverse(root_dir):
    # 遍历整个目录树
    for current_dir, sub_dirs, files in os.walk(root_dir):
        print(f"=== 当前目录: {current_dir} ===")
        # 输出所有子文件夹的完整路径
        for sub_dir in sub_dirs:
            sub_dir_full_path = os.path.join(current_dir, sub_dir)
            print(f"子文件夹: {sub_dir_full_path}")
        # 输出所有文件的完整路径
        for file in files:
            file_full_path = os.path.join(current_dir, file)
            print(f"文件: {file_full_path}")

# 调用示例,Windows路径记得用原始字符串或双反斜杠
full_traverse(r"c:\test")
方法2:使用 pathlib(现代简洁款)

如果你用的是Python3.4及以上版本,推荐试试pathlib——它是面向对象的文件路径操作库,语法更简洁直观,递归遍历写起来特别清爽。

代码示例:

from pathlib import Path

def full_traverse(root_dir):
    root_path = Path(root_dir)
    # rglob("*") 会匹配当前目录及所有子目录下的所有路径
    for item in root_path.rglob("*"):
        if item.is_dir():
            print(f"子文件夹: {item}")
        elif item.is_file():
            print(f"文件: {item}")

# 调用示例
full_traverse(r"c:\test")

小提示

  • Windows路径可以用原始字符串(比如r"c:\test")或者双反斜杠("c:\\test"),避免转义字符的坑。
  • 如果只需要遍历特定类型的文件,比如.txt,可以把rglob("*")改成rglob("*.txt"),非常灵活。
  • os.walk()适合需要单独处理子目录列表(比如跳过某些文件夹)的场景;pathlib则胜在代码简洁、可读性高,看你的项目需求和个人习惯选就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 14:57:35