Skip to main content
 首页 » 编程设计

python之正则表达式文件名,Python

2025年01月19日38落叶无声

我正在尝试获取所有具有 excel 格式扩展名的文件,因此我认为这会选择文件名中包含 xls 的任何文件。它会选择 xls、xlsx、xlsm 等。

路径是一个变量,定义为我从中提取这些文件的文件夹,all_files 存储这些文件。/* 不应该定义任何包含 .xls 的文件吗? /*.xlsx 或 /*.xlsm 工作正常。

all_files=glob.glob(path + "/*.xls/*") 

请您参考如下方法:

您正在尝试获取所有包含 .xls 的文件,并且您正在尝试 glob 模式:

/*.xls/* 

这将找到以 .xls 结尾的目录(注意结尾的 /),而不是文件。

你需要:

glob.glob(path + "/*.xls*") 

但这并不准确,因为这会匹配任何只有字符串 .xls 的文件,例如foo.xlsbar.

问题是标准的 shell 通配符(即使利用 [],? 在这里也做不到)不像这里需要的 Regex 那样灵活,你可以换行一些正则表达式检查之后的 glob:

import glob 
import re 
req = re.compile(r'\.xls[xm]?$') 
all_files = list(filter(lambda x: req.search(x), glob.iglob(path + '/*.xls*')))