首页 >后端开发 >Python教程 >考虑到不同的 Python 版本,如何在 Python 中递归查找文件?

考虑到不同的 Python 版本,如何在 Python 中递归查找文件?

Barbara Streisand
Barbara Streisand原创
2024-12-11 12:22:11422浏览

How Can I Recursively Find Files in Python, Considering Different Python Versions?

使用 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn