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
相关产品推荐
相关产品推荐

