使用 Python 递归查找文件
递归查找目录中的所有文件对于组织和管理文件系统来说是一项很有价值的任务。本文将详细阐述此任务的替代方法,解决使用 glob.glob() 的限制。
Pathlib.Path().rglob()
For Python 3.5 及更高版本中,pathlib.Path().rglob() 方法提供了一种递归搜索文件的便捷方法。它允许您导航目录并返回与指定模式匹配的文件的路径对象。
from pathlib import Path for path in Path('src').rglob('*.c'): print(path.name)
带有递归参数的 Glob.glob()
或者,对于在 Python 的早期版本中,glob.glob() 提供了一个允许递归搜索的递归参数。通过将其设置为 True,它将探索子目录并返回匹配文件。
from glob import glob for filename in glob('src/**/*.c', recursive=True): print(filename)
Os.walk() 和 Fnmatch.filter()
对于更老的Python 版本 os.walk() 和 fnmatch.filter() 提供了一种使用简单的方法递归遍历目录结构并匹配文件的方法表达式。
import fnmatch import os matches = [] for root, dirnames, filenames in os.walk('src'): for filename in fnmatch.filter(filenames, '*.c'): matches.append(os.path.join(root, filename))
与 pathlib 相比,此方法提供更快的性能,特别是对于大型文件集。
以上是考虑到不同的 Python 版本,如何在 Python 中递归查找文件?的详细内容。更多信息请关注PHP中文网其他相关文章!