Как найти каталог в Python рекурсивно - PullRequest
0 голосов
/ 27 ноября 2018

Скажем, у меня есть структура каталогов, например:

foo1/
├── bar2/
│   └── ...
└── bar4/
    └── ...

Я хочу написать функцию, которая найдет каталог, который я ищу, и его родительский каталог, например

def directory_find(atom):
    # ....

directory_find(bar4)

так что это вернуло бы меня foo3/bar4 в результате родительский каталог может быть изначально неизвестен, поэтому я думаю о рекурсивном поиске.

Кажется, модуль os не делает то, чтоЯ хочу, так как это работает только для файлов таким образом.

1 Ответ

0 голосов
/ 27 ноября 2018

Вот что os.walk() делает для вас;он будет пересекать структуру вложенных каталогов и сообщать вам на каждом шаге, какие имена файлов и каталогов.

Ваш поиск может быть реализован как:

def directory_find(atom, root='.'):
    for path, dirs, files in os.walk(root):
        if atom in dirs:
            return os.path.join(path, atom)

Демонстрация:

>>> import os
>>> os.makedirs("foo1/bar2", exist_ok=True)
>>> os.makedirs("foo1/bar4", exist_ok=True)
>>> directory_find('bar2')
'./foo1/bar2'
>>> directory_find('bar4')
'./foo1/bar4'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...