Python Pathlib glob匹配异常:部分文件类型无法识别
问题原因及解决方法
你写的glob模式语法理解错了,核心问题出在方括号[]的用法:
- 方括号
[]在glob里是单字符匹配集合,比如[jpg]表示匹配j、p、g中的任意一个单个字符,不是匹配完整的.jpg后缀。 - 你写的
**/*.[jpg][jpeg][jfif][png]实际是在匹配:文件名加一个点后,从每个方括号里各取一个字符组成的后缀(比如.jjfp、pjig这类奇怪的组合),完全不是你想要的.jpg、.jpeg这类完整后缀,自然找不到对应文件。
正确写法
要匹配多组完整后缀,应该用**大括号{}**来做分组匹配,语法格式为**/*.{后缀1,后缀2,后缀3}:
from pathlib import Path folder_path = "你的目标文件夹路径" # 匹配jpg、jpeg、jfif、png、bmp类型文件 matched_files = list(Path(folder_path).glob('**/*.{jpg,jpeg,jfif,png,bmp}'))
大括号{a,b,c}的作用是匹配a、b、c中的任意一个完整字符串,刚好符合你多后缀匹配的需求。
内容的提问来源于stack exchange,提问作者Cypher
相关产品推荐
相关产品推荐

