我有一个包含文件列表的目录,我希望将direcotry的内容与模式匹配
>>os.listdir(os.getcwd()) gives
[2010.1.1-19999, 2011.1.1-124444]
>> fnmatch.filter(os.listdir(os.getcwd()),"\d+\.\d\.\d\-\d+")
[]
结果为null,并且fnmatch函数没有模式匹配目录列表的内容。
这里的错误是什么?
答案 0 :(得分:1)
"\d+\.\d\.\d\-\d+"
不是fnmatch
通配模式,它是正则表达式。来自module documentation:
此模块提供对Unix shell样式通配符的支持,这些通配符不与正则表达式相同(在
re
模块中记录)。
如果您想使用正则表达式,请使用re
模块测试您的文件名:
import re
[filename for filename in os.listdir() if re.match(r"^\d+\.\d\.\d\-\d+$", filename)]
作为旁注,如果您发现自己使用fnmatch.filter(os.listdir(directory), pattern)
,则只需使用glob.glob(os.path.join(directory, pattern))
。