我正在尝试使用excel格式扩展来获取所有文件,因此我认为这会选择文件名中包含xls的任何文件。它会接受xls,xlsx,xlsm等。
路径是一个变量,定义为我从中提取这些文件的文件夹,all_files正在存储这些文件。不应该/ *定义任何包含.xls的文件吗? /*.xlsx
或/*.xlsm
工作正常。
all_files=glob.glob(path + "/*.xls/*")
答案 0 :(得分:1)
您正在尝试获取其中包含.xls
的所有文件,并且您正在尝试使用glob模式:
/*.xls/*
这将找到以/
结尾的目录(请注意尾随.xls
),而不是文件。
你需要:
glob.glob(path + "/*.xls*")
但这不准确,因为这会匹配任何只有字符串.xls
的文件,例如foo.xlsbar
。
问题是标准shell globbing(甚至利用[]
,?
不会在这里做)并不像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*')))
答案 1 :(得分:0)
表达式中有一个额外的“/”。要将通配符添加到“.xls”的末尾,您需要:
all_files=glob.glob(path + "/*.xls*")