我正在尝试获取所有具有 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*')))
关于python - 正则表达式文件名,Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48230301/