使用fnmatch排除文件

时间:2018-03-07 14:43:49

标签: python file ignore fnmatch

我在Python中创建一个循环,使用fnmatch.filter()运行特定目录中的所有文件。目前,我正在浏览特定文件夹中的所有.csv文件,如下所示:

for file_source in fnmatch.filter(os.listdir(source_dir), "*.csv")

我想要做的是排除带有“Test *”模式的文件。这在某种程度上可以用fnmatch做。在最坏的情况下,我只会创建另一个内部if循环,但更喜欢更清洁的解决方案。

3 个答案:

答案 0 :(得分:1)

您可以使用列表推导来过滤文件名:

for file_source in [x for x in fnmatch.filter(os.listdir(source_dir), "*.csv") if 'Test' not in x ] :
     pass

答案 1 :(得分:0)

我不熟悉fnmatch,但我试过

   if fnmatch.fnmatch(file, 'Test*'):
       print(file)

它工作得很好。您也可以使用Chris建议的列表理解。

答案 2 :(得分:0)

这样的事情怎么样:

import re
import os

for file in os.listdir('./'):
    rex   = '^((?!Test).)*\.csv$'
    reobj = re.compile(rex)
    obj = reobj.match(file)
    if obj != None:
        print obj.string