Как исключить каталог (не удалить), когда вы перечисляете каталоги в python - PullRequest
0 голосов
/ 06 августа 2020

Я использую os.walk и могу успешно выводить список каталогов. Я использую эти каталоги как переменные, и мне не нужно, чтобы пара каталогов была их частью. Как мне исключить и заставить все остальные каталоги двигаться вперед?

Ответы [ 2 ]

0 голосов
/ 06 августа 2020

Вы можете сделать это, просто изменив, т. Е. Удалив исключенные каталоги из 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

Если у вас есть вопросы, пожалуйста, спросите в комментарии ...

0 голосов
/ 06 августа 2020

Вам нужно изменить dirs на месте, чтобы удалить (последующие) файлы и каталоги, посещаемые os.walk:

# exclude = set([...])
for root, dirs, files in os.walk(top, topdown=True):
dirs[:] = [d for d in dirs if d not in exclude]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...