python 文件匹配工具:glob/pathlib¶
0 背景¶
文件匹配是编程中常见的需求,特别是在处理大量数据文件时。在数据分析和科学计算中,经常需要从大量数据文件中筛选出特定类型或格式的文件; 在系统管理和日志分析中,定期搜索、归档或删除特定模式的日志文件; 在项目管理 & 软件开发中,有时候我们需要查找特定类型的源代码文件、配置文件或文档。
Python 提供了多种方式来处理文件和目录,其中 glob.glob() 模块和 pathlib 库的 Path.glob() 方法是两种常用的文件模式匹配工具。
glob 模块¶
glob 是python自带的一个模块, glob 模块提供了一个函数 glob(),用于根据指定的模式匹配文件路径。这种模式匹配类似于 Unix shell 中的文件匹配规则。例如,使用 *.txt 可以匹配所有的文本文件。glob 模块特别适合用在需要文件名匹配而不需要遍历目录的场景。
pathlib 模块¶
pathlib是python自带的更具现代化的系统文件目录路径处理库, 在之前的推文中我们系统性地提到了pathlib模块的用法, Path.glob() 方法提供了类似于 glob.glob() 的功能,但与此同时,它以面向对象的方式工作,使得路径处理更加直观和灵活。
下面我们也来系统介绍一些常用的用法。
1 使用¶
1 glob¶
首先导入包,
列举出当前目录下所有的pdf文件:
在上面我们使用了一个通配符*, 有以下的一些通配符可以供我们使用:
*代表任何数量的字符。例如,*.txt会匹配所有以.txt结尾的文件。?代表任何单个字符。例如,?.txt会匹配所有单个字符后跟.txt的文件。[chars]匹配方括号中的任何字符。例如,[a-c].txt会匹配a.txt,b.txt, 和c.txt。
其实这些通配符, 在许多软件, 编程语言中都很通用.
当然, 有时候我们不仅需要搜索一个目录下面的文件, 我们更需要递归的搜索特定类型的文件.
比如我们需要搜索我们微信路径下所有的pdf文件.
微信文件的默认路径是%Documents%/WeChat Files/%User%/FileStorage/File
import glob
wechat_file_mode = 'E:/files/Documents/WeChat Files/orange/FileStorage/File/**/*.pdf'
for file in glob.glob(wechat_file_mode, recursive=True):
print(file)
2 pathlib¶
首先导入包
递归列举出, 微信路径下所有的pdf文件.
wechat_file_dir = Path('E:/files/Documents/WeChat Files/orange/FileStorage/File/')
for file in wechat_file_dir.glob('**/*.pdf'):
print(file)
或者
rglob 就是递归匹配的意思.
2 关于¶
欢迎关注我的微信公众号。