递归遍历目录结构以列出所有文件是常见的编程需求。在这种情况下,让我们探讨如何在 Python 中有效地完成此任务。
一种方法是使用 Python 3.5 中引入的 pathlib.Path().rglob() 方法。它提供了一种便捷的方法来识别目录及其子目录中与特定模式匹配的所有文件:
from pathlib import Path for path in Path('src').rglob('*.c'): print(path.name)
如果您更喜欢使用 glob 模块,您可以利用其 glob() 函数和 recursive=True参数:
from glob import glob for filename in glob('src/**/*.c', recursive=True): print(filename)
另一个选项,与旧的 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 模块相关的开销较低,os.walk() 技术在文件数量较多的情况下可能会更快。
无论您选择哪种方法,这些方法都将有效地帮助您递归地识别和列出指定目录及其子文件夹中的文件。
以上是如何使用Python递归列出目录中的所有文件?的详细内容。更多信息请关注PHP中文网其他相关文章!