使用Python的pathlib模块进行文件搜索和过滤的技巧与缺点分析

1,搜索文件,文件过滤

使用Python的pathlib模块进行文件搜索和过滤的技巧与缺点分析

这里使用 pathlib 模块的 Path.glob 方法,此方法能够用于过滤目标文件,并且以迭代器的形式来返回搜索结果。

pattern: 通配符:

搜索指定目录下所有后缀为 py 的文件,且仅在当前目录进行搜索,不搜索子目录。

搜索指定目录下所有的 py 后缀文件,包括子目录。"**" 模式意味着此目录以及所有子目录,会进行递归搜索。也就是说,它开启了递归通配功能。

文件名可以使用以下符号组合进行模式匹配:
" * " 匹配0个或多个字符
" ? " 仅匹配一个字符
" [] " 匹配指定范围内的字符,如[0-9]匹配数字

2,用法:

1,只遍历当前目录

import pathlib
# 构建一个pathlib.Path()对象
# 指定一个目录起始点:"F:/path_test"
路径对象 p 等于 pathlib 库中的 Path 类创建的对象,其路径为 "F:/path_test"
遍历 F:/path_test 目录,找出其中所有的 py 文件。
# 只遍历当前目录
ret = p.glob("*.py")
for item in ret:
    print(item)
""" 运行结果 
F:\path_test\01.py
F:\path_test\02.py
"""

2,递归遍历

# ......
遍历 F:/path_test 目录及其子目录中的所有 py 文件。
# 递归遍历所有子目录
ret = p.glob("**/*.py")
for item in ret:
    print(item)
""" 运行结果 
F:\path_test\01.py
F:\path_test\02.py
F:\path_test\src\11.py
F:\path_test\src\22.py
"""

3,Path.rglob() 递归遍历

# ......
# 遍历 F:/path_test目录及子目录下 所有的 py 文件
# 递归遍历所有子目录
调用 Path.glob()时,就如同在通配符 pattern 前面添加了 "**/" 那样
ret = p.rglob("*.py")
for item in ret:
    print(item)
""" 运行结果 
F:\path_test\01.py
F:\path_test\02.py
F:\path_test\src\11.py
F:\path_test\src\22.py
"""

缺点:当目录树较大时,Path.glob() 耗时较长。

你可能想看:
« 上一篇
下一篇 »

相关推荐

python爬虫教程PDF,Python爬虫书PDF

2026年09月02日

32阅读

外国教程python,python编程教学视频

2026年09月02日

27阅读

python简明教程沈洁元,python详细基础教程

2026年09月02日

21阅读

python库包教程,python 包

2026年09月02日

27阅读

python教程大全集,python教程600集

2026年09月02日

27阅读

python入门教程完整版,python零基础入门全套教程视频

2026年09月02日

23阅读