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

Skip directories in list with 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"]

我希望它不 return 名为 "october" 或 "december" 的目录或我可能添加到排除列表的任何其他目录中的任何内容。

感谢任何帮助。

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

确保它是就地编辑,例如:

dirnames[:] = [dirname for dirname in dirnames if dirname not in excludes]