当前位置:首页 > Python > 正文

Python目录遍历完全指南(新手也能轻松掌握的os.walk与pathlib方法)

在日常的Python编程中,Python目录遍历是一项非常基础且实用的技能。无论是批量处理文件、查找特定类型文档,还是构建文件管理系统,掌握如何高效地遍历文件夹结构都是必不可少的。

Python目录遍历完全指南(新手也能轻松掌握的os.walk与pathlib方法) Python目录遍历  os.walk教程 文件系统操作 Python文件遍历 第1张

为什么需要目录遍历?

想象一下,你有一个包含成百上千个文件的项目文件夹,需要找出所有以 .log 结尾的日志文件,或者统计某个目录下所有图片的总大小。手动操作显然不现实,而通过Python文件遍历,只需几行代码即可完成。

方法一:使用 os.walk() —— 经典可靠的遍历方式

os.walk() 是 Python 标准库中最常用的目录遍历工具。它会递归地遍历指定目录下的所有子目录和文件,并返回一个生成器。

基本语法如下:

import osfor root, dirs, files in os.walk('目标目录路径'):    print(f"当前目录: {root}")    print(f"子目录列表: {dirs}")    print(f"文件列表: {files}")    print("-" * 40)

其中:

  • root:当前正在遍历的目录路径
  • dirs:该目录下的子目录名列表
  • files:该目录下的文件名列表

实战示例:查找所有 .txt 文件

import osdef find_txt_files(directory):    txt_files = []    for root, dirs, files in os.walk(directory):        for file in files:            if file.endswith('.txt'):                full_path = os.path.join(root, file)                txt_files.append(full_path)    return txt_files# 使用示例results = find_txt_files('./my_project')for path in results:    print(path)

方法二:使用 pathlib.Path.rglob() —— 现代简洁的写法

从 Python 3.4 开始,官方推荐使用 pathlib 模块进行路径操作。它提供了面向对象的接口,代码更清晰易读。

from pathlib import Path# 遍历当前目录下所有 .py 文件directory = Path('./my_project')for py_file in directory.rglob('*.py'):    print(py_file.resolve())  # 输出绝对路径

这里 rglob() 表示“递归 glob”,即在整个目录树中匹配模式。相比 os.walk(),这种方式更直观,尤其适合简单过滤场景。

两种方法对比

特性 os.walk() pathlib.rglob()
Python 版本支持 所有版本 ≥3.4
语法简洁性 较繁琐 非常简洁
控制粒度 高(可修改 dirs 列表跳过子目录) 较低

常见应用场景

  • 批量重命名文件
  • 清理临时文件(如 .tmp、.cache)
  • 统计项目代码行数
  • 备份特定类型文件

小贴士:避免常见错误

  • 确保路径存在,否则会抛出异常(可用 os.path.exists()Path.exists() 检查)
  • 注意权限问题,某些系统目录可能无法访问
  • 处理大量文件时,考虑使用生成器避免内存溢出

总结

无论是传统的 os.walk() 还是现代的 pathlib,Python 都为我们提供了强大而灵活的文件系统操作能力。初学者可以从 os.walk 入手理解遍历逻辑,进阶后可尝试 pathlib 提升代码可读性。掌握这些技巧,你就能轻松应对各种Python目录遍历任务!

希望这篇教程能帮助你迈出自动化文件处理的第一步!