如何用Python glob模块匹配含指定数字列表元素的doc*.xml文件?
解决方案
方法1:生成精准匹配模式
为列表中的每个数字单独构建glob匹配规则,遍历收集所有符合条件的文件:
from pathlib import Path pathPac = '/Users/noah/Data/Docs' target_nums = ['2054', '3271', '8671', '273'] pathlist = [] for num in target_nums: pattern = f'**/doc{num}.xml' pathlist.extend(Path(pathPac).glob(pattern)) # 若需去重(多个模式意外匹配同一文件时可用) pathlist = list(set(pathlist))
这种方式直接精准匹配目标文件,无需额外过滤逻辑,执行效率高。
方法2:先批量获取再筛选
先获取所有doc*.xml格式的文件,再从中筛选文件名包含目标数字的:
from pathlib import Path pathPac = '/Users/noah/Data/Docs' target_nums = ['2054', '3271', '8671', '273'] all_candidates = Path(pathPac).glob('**/doc*.xml') pathlist = [file for file in all_candidates if any(num in file.name for num in target_nums)]
这种方式更灵活,比如后续需要调整匹配规则(比如数字出现在文件名其他位置),只需修改筛选条件即可。
内容的提问来源于stack exchange,提问作者noahjb
相关产品推荐
相关产品推荐

