Как получить все непосредственные подкаталоги в Python - PullRequest
117 голосов
/ 29 апреля 2009

Я пытаюсь написать простой скрипт на Python, который будет копировать index.tpl в index.html во всех подкаталогах (за некоторыми исключениями).

Я застрял, пытаясь получить список подкаталогов.

Ответы [ 13 ]

0 голосов
/ 22 января 2019

Я должен упомянуть библиотеку path.py , которую я использую очень часто.

Получение непосредственных подкаталогов становится таким простым:

my_dir.dirs()

Полный рабочий пример:

from path import Path

my_directory = Path("path/to/my/directory")

subdirs = my_directory.dirs()

NB. My_directory все еще можно манипулировать как строкой, поскольку Path является подклассом строки, но предоставляет набор полезных методов для манипулирования путями

0 голосов
/ 22 января 2019
import glob
import os

def child_dirs(path):
     cd = os.getcwd()        # save the current working directory
     os.chdir(path)          # change directory 
     dirs = glob.glob("*/")  # get all the subdirectories
     os.chdir(cd)            # change directory to the script original location
     return dirs

Функция child_dirs берет путь к каталогу и возвращает список непосредственных подкаталогов в нем.

dir
 |
  -- dir_1
  -- dir_2

child_dirs('dir') -> ['dir_1', 'dir_2']
0 голосов
/ 14 августа 2018
def get_folders_in_directories_recursively(self, directory, index=0):
    folder_list = list()
    parent_directory = directory

    for path, subdirs, _ in os.walk(directory):
        if not index:
            for sdirs in subdirs:
                folder_path = "{}/{}".format(path, sdirs)
                folder_list.append(folder_path)
        elif path[len(parent_directory):].count('/') + 1 == index:
            for sdirs in subdirs:
                folder_path = "{}/{}".format(path, sdirs)
                folder_list.append(folder_path)

    return folder_list

Следующая функция может быть вызвана как:

get_folders_in_directories_recursively (directory, index = 1) -> выдает список папок первого уровня

get_folders_in_directories_recursively (каталог) -> дает все подпапки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...