模式匹配python中的目录内容

时间:2018-01-09 18:54:01

标签: python python-2.7

我有一个包含文件列表的目录,我希望将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函数没有模式匹配目录列表的内容。

这里的错误是什么?

1 个答案:

答案 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))