递归查找文件:探索 pathlib.rglob()、glob.glob() 和 os.walk()
处理时复杂的目录结构,递归地定位文件变得至关重要。可以使用各种 Python 模块和方法来简化此任务。
一种方法是利用 Python 3.5 中引入的 pathlib.Path().rglob()。它允许直接递归文件搜索:
from pathlib import Path for path in Path('src').rglob('*.c'): print(path.name)
或者,glob.glob() 提供了另一种递归文件列表选项:
from glob import glob for filename in glob('src/**/*.c', recursive=True): print(filename)
此方法也支持匹配以点 (.) 开头的文件。
对于较旧的 Python 版本或速度较慢时至关重要的是,os.walk()提供了一个可靠的解决方案:
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))
通过根据您的Python版本和性能要求选择合适的方法,您可以有效地在目录和目录中递归列出文件子目录。
以上是如何使用'pathlib”、'glob”和'os.walk”在 Python 中递归查找文件?的详细内容。更多信息请关注PHP中文网其他相关文章!