正则表达式文件名,Python
Regex filenames, Python
我正在尝试获取所有具有 excel 格式扩展名的文件,因此我认为这会 select 任何文件名中包含 xls 的文件。它会在 xls、xlsx、xlsm 等上出现。
路径是一个变量,定义为我从中提取这些文件的文件夹,all_files 正在存储这些文件。 /* 不应该定义任何包含 .xls 的文件吗? /*.xlsx
或 /*.xlsm
工作正常。
all_files=glob.glob(path + "/*.xls/*")
你的表情多了一个“/”。要将通配符添加到“.xls”的末尾,您需要:
all_files=glob.glob(path + "/*.xls*")
您正在尝试获取所有包含 .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*')))
我正在尝试获取所有具有 excel 格式扩展名的文件,因此我认为这会 select 任何文件名中包含 xls 的文件。它会在 xls、xlsx、xlsm 等上出现。
路径是一个变量,定义为我从中提取这些文件的文件夹,all_files 正在存储这些文件。 /* 不应该定义任何包含 .xls 的文件吗? /*.xlsx
或 /*.xlsm
工作正常。
all_files=glob.glob(path + "/*.xls/*")
你的表情多了一个“/”。要将通配符添加到“.xls”的末尾,您需要:
all_files=glob.glob(path + "/*.xls*")
您正在尝试获取所有包含 .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*')))