如何检查文件名列表中是否没有模式列表?

时间:2012-02-28 17:13:33

标签: python regex

想要丢弃具有特定文件格式的一组文件。例如,模式列表中列出的那些。

     patterns =[r'\.pdf$',r'\.mpeg$'] 
     NOT_FILE = [ re.compile(p) for p in patterns] 
     grep_not_match = (lambda l, regex: [each for each in l if (regex.search(e)))])

     for rt,dr,files in os.walk(rootdirectory):
         files = grep_not_match(files,NOT_FILE)

我知道,我在这里犯了一个超级愚蠢的错误,任何人都可以搞清楚吗?

3 个答案:

答案 0 :(得分:3)

对于像这样的简单任务,您不需要正则表达式。你可以使用endswith:

files = [f for f in files if not f.endswith(('.pdf', '.mpeg'))]

答案 1 :(得分:1)

列表理解看起来应该是这样的:[每个用于l if(regex.search(each)))])

似乎这至少是问题的一部分

答案 2 :(得分:1)

为什么不为此目的尝试fnmatch模块。

fnmatch.fnmatch(file, '*.pdf'):
  

测试文件名字符串是否与模式字符串匹配,然后返回   对错