pathlib 是 Python 标准库的一部分,提供了一种面向对象的方式来处理文件系统路径。结合 glob 模式匹配,可以很方便地找到所有匹配的文件。
今天介绍 pathlib 获取文件路径,一个是递归获取目录下所有匹配的文件,即包括子文件夹;另一个是仅查找当前文件夹。
应用 rglob 查找目录下所有匹配的文件:
from pathlib import Path
# 指定目录路径
directory_path = Path(r'C:\Users\Administrator\Desktop\新建文件夹')
# 使用 glob 模式匹配查找所有 .xls 文件(包括子目录)
xls_files = list(directory_path.rglob('*.xls'))
# 打印文件路径
for file in xls_files:
print(file)
上述代码可以找到文件夹:“C:\Users\Administrator\Desktop\ 新建文件夹” 下所有包括子文件夹下的 xls 文件。
如果不需要查询子文件夹,只需要当前文件夹,可以使用 glob () 方法,使用方法和 rglob 是一样的:
from pathlib import Path
# 指定目录路径
directory_path = Path(r'C:\Users\Administrator\Desktop\')
# 使用 glob 模式匹配查找所有 .xls 文件(不包括子目录)
xls_files = list(directory_path.glob('*.xls'))
# 打印文件路径
for file in xls_files:
print(file)
上述代码会查找文件夹:“C:\Users\Administrator\Desktop\” 当前目录所有的 xls 文件。
这个查找规则基本上和 win 文件管理器查找规则一样,文件拓展名不区分大小写:
#两段规则的查询效果是一样的
xls_files = list(directory_path.glob('*.xls'))
xls_files = list(directory_path.glob('*.XLS'))
还可以在文件名或者扩展名处应用通配符查找,例如,查找所有 xls 和 xlsx 文件:
xls_files = list(directory_path.glob('*.XLS*'))
在 xls 后加一个 “*”,可以通配所有扩展名前是 “.xls” 文件,其中包括 xlsx 和 xls;
还可以匹配名字中包含 “leon” 的文件:
xls_files = list(directory_path.glob('*leon*.*'))
查找第二个字是” 帅” 的文件:
xls_files = list(directory_path.rglob('?帅*.*'))
和文件管理器的使用体验基本上是一致的,而且查询速度非常快,大家可以是试一试。