Получение списка всех подкаталогов в текущем каталоге

Попробуйте это

 public function getNextVal(&$array, $curr_val){

    foreach($array as $k=>$v){
        if($v['your_key'] == $curr_val){
            if(isset($array[$k+1]))
                return $array[$k+1];
            else
                return $array[0];
        }
    }

}

public function getPrevVal(&$array, $curr_val){

    foreach($array as $k=>$v){
        if($v['your_key'] == $curr_val){
            if(isset($array[$k-1]))
                return $array[$k-1];
            else
                return end($array);
        }
    }
}

для массива следующим образом:

array (size=3)
0 => 
array (size=11)
  'id' => string '21' (length=2)
  'cat' => string '1' (length=1)
  'gal' => string '1' (length=1)
  'type' => string 'image' (length=5)
  'name' => string 'chalk_art_dies-irea_2nd_pic' (length=27)
  'permalink' => string 'chalk-art-dies-irea-2nd-pic' (length=27)
  'url' => string 'rxNsPoEiJboJQ32.jpg' (length=19)
  'content' => string '' (length=0)
  'date' => string '1432076359' (length=10)
  'order' => string '20' (length=2)
  'views' => string '0' (length=1)
 1 => 
   array (size=11)
  'id' => string '10' (length=2)
  'cat' => string '1' (length=1)
  'gal' => string '1' (length=1)
  'type' => string 'image' (length=5)
  'name' => string '3dchalkart' (length=10)
  'permalink' => string '3dchalkart' (length=10)
  'url' => string 's57i5DKueUEI4lu.jpg' (length=19)
  'content' => string '' (length=0)
  'date' => string '1432076358' (length=10)
  'order' => string '9' (length=1)
  'views' => string '0' (length=1)
  2 => 
417
задан the Tin Man 16 June 2016 в 21:45
поделиться

5 ответов

Вы имеете в виду непосредственные подкаталоги или каждый каталог прямо по дереву?

В любом случае вы можете использовать os.walk для этого:

os.walk(directory)

даст кортеж для каждого подкаталога. Первая запись в кортеже из трех - это имя каталога, поэтому

[x[0] for x in os.walk(directory)]

должен предоставить вам все подкаталоги рекурсивно.

Обратите внимание, что вторая запись в кортеже - это список дочерних каталогов записи в первой положение, так что вы можете использовать это вместо этого, но это вряд ли вас сильно спасет.

Однако вы можете использовать его только для непосредственного предоставления дочерних каталогов:

next(os.walk('.'))[1]

Или посмотрите другие решения, уже опубликованные, используя ] os.listdir и os.path.isdir , включая те, что находятся в « Как получить все непосредственные подкаталоги в Python ».

531
ответ дан 22 November 2019 в 22:55
поделиться

Функция для возврата Списка всех подкаталогов в данном пути к файлу. Перероет все дерево файла.

import os

def get_sub_directory_paths(start_directory, sub_directories):
    """
    This method iterates through all subdirectory paths of a given 
    directory to collect all directory paths.

    :param start_directory: The starting directory path.
    :param sub_directories: A List that all subdirectory paths will be 
        stored to.
    :return: A List of all sub-directory paths.
    """

    for item in os.listdir(start_directory):
        full_path = os.path.join(start_directory, item)

        if os.path.isdir(full_path):
            sub_directories.append(full_path)

            # Recursive call to search through all subdirectories.
            get_sub_directory_paths(full_path, sub_directories)

return sub_directories
0
ответ дан 22 November 2019 в 22:55
поделиться

Это - то, как я делаю это.

    import os
    for x in os.listdir(os.getcwd()):
        if os.path.isdir(x):
            print(x)
3
ответ дан 22 November 2019 в 22:55
поделиться
import os

d = '.'
[os.path.join(d, o) for o in os.listdir(d) 
                    if os.path.isdir(os.path.join(d,o))]
149
ответ дан 22 November 2019 в 22:55
поделиться

Если вам нужно рекурсивное решение, которое найдет все подкаталоги в подкаталогах, используйте обход, как предлагалось ранее.

Если вам нужны только дочерние каталоги текущего каталога, объедините os .listdir с os.path.isdir

36
ответ дан 22 November 2019 в 22:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: