【问题标题】:Skip directories in list with os.walk?使用 os.walk 跳过列表中的目录?
【发布时间】:2017-01-01 03:11:24
【问题描述】:

我有一个从图像目录生成列表的工作函数

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”的目录或我可能添加到排除列表中的任何其他目录中的任何内容。

感谢所有帮助。

【问题讨论】:

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


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2011-07-05
    • 1970-01-01
    • 2016-12-20
    • 1970-01-01
    • 1970-01-01
    • 2012-10-25
    • 1970-01-01
    • 2013-06-01
    • 1970-01-01
    相关资源
    最近更新 更多