首页 > 解决方案 > 在 python 中列出目录时如何排除目录(不删除)

问题描述

我正在使用 os.walk,我能够成功列出目录。我将这些目录用作变量,我不需要几个目录作为其中的一部分。我如何排除并让所有其他目录继续前进?

标签: python

解决方案


您可以通过简单地修改 ie 来做到这一点,即通过subdirectory list inplace(note this word)os.walk(). 您可以通过多种方式进行操作(我的意思是就地删除):

首先在你的代码上写这个:

import os

root = "the/path/to/root/dir";
exclude_dir_set = set(['some_dir', 'another_some_dir`])

第一种方法

for current_dir, dirs, files in os.walk(root):
    dirs[:] = list(set(dirs) - exclude_dir_set)

第二种方法:

for current_dir, dirs, files in os.walk(root):
    dirs[:] = [_dir for _dir in dirs if _dir not in exclude_dir_set]

第三种方法:

for current_dir, dirs, files in os.walk(root):
    for _dir in dirs:
        try:
            if _dir in exclude_dir_set:
                dirs.remove(_dir)
        except ValueError:
            pass # do nothing

如果您有任何问题,请在评论中提问...


推荐阅读