2012-02-28 63 views
1

想要丟棄一組具有特定文件格式的文件。例如,模式列表中列出的那些。如何檢查列表中的模式列表是否存在於我的文件名列表中?

 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

你不需要像這樣的簡單任務的正則表達式。你可以使用的endsWith:

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

媽的。爲什麼我沒有想到但願。 :( 謝謝!! – madCode 2012-02-28 17:33:41

1

列表內涵看起來像它應該閱讀:[IF(regex.search(每個)))分別用於各1])

看起來這是問題的至少一部分

1

爲什麼不試試fnmatch模塊用於這一目的。

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

的文件名字符串是否測試模式字符串匹配,返回 真或假

相關問題