使用os.walk跳过列表中的目录?

时间:2016-12-31 19:01:41

标签: python-2.7 for-loop os.walk

我有一个工作函数,可以从图像目录中生成一个列表

def jpg_descended(folder):
    matches = []
    for root, dirnames, filenames in os.walk(unicode(folder)):
        for extension in ('*.jpg', '*.jpeg', '*.png'):
            for filename in fnmatch.filter(filenames, extension):
                    matches.append(os.path.join(root, filename))
    return sorted(matches, key=os.path.getmtime, reverse=True)

但是如何让它跳过我列入列表的目录?

excludes = ["october", "december"]

我希望它不会在名为“october”或“december”的目录或我可能添加到排除列表中的任何其他目录中返回任何内容。

感谢任何和所有帮助。

1 个答案:

答案 0 :(得分:2)

您可以通过删除符合要求的目录来编辑dirnames。当topdown=True(默认值)os.walk时,会阻止枚举这些目录。

确保它是到位编辑,例如:

dirnames[:] = [dirname for dirname in dirnames if dirname not in excludes]
相关问题