我正在使用fnmatch.filter()在Python中创建一个循环,该循环遍历特定目录中的所有文件。目前,我正在查看特定文件夹中的所有.csv文件,如下所示:
for file_source in fnmatch.filter(os.listdir(source_dir), "*.csv")我想要做的是排除带有模式"Test*“的文件。有可能和火柴有关吗。在最坏的情况下,我只会创建另一个内部的if循环,但更喜欢一个更干净的解决方案。
发布于 2018-03-07 14:54:03
您可以使用列表理解来筛选文件名:
for file_source in [x for x in fnmatch.filter(os.listdir(source_dir), "*.csv") if 'Test' not in x ] :
pass发布于 2018-03-07 14:56:16
我不熟悉火柴,但我试过了。
if fnmatch.fnmatch(file, 'Test*'):
print(file)一切都很顺利。您也可以使用清单理解,如克里斯的建议。
发布于 2018-03-07 15:10:01
像这样的事怎么样:
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.stringhttps://stackoverflow.com/questions/49154607
复制相似问题