Список подкаталогов в Python

  1. Список подкаталогов с помощью модуля glob в Python
  2. Список подкаталогов с помощью функции os.scandir() в Python
  3. Список подкаталогов с помощью функции os.walk() в Python

Существует три эффективных метода, которые вы можете использовать для вывода списка всех подкаталогов внутри указанного каталога в Python: функция glob.glob (), функция os.scandir () и функция os.walk (). Это руководство продемонстрирует, как вы можете работать с этими функциями для вывода списка подкаталогов в Python.

Список подкаталогов с помощью модуля glob в Python

Модуль glob используется для получения имен путей, соответствующих определенному шаблону. Мы можем использовать функцию glob() внутри модуля glob Python, чтобы вывести список всех подкаталогов указанного основного каталога, указав /*/ в конце пути к каталогу. Следующий фрагмент программы показывает нам, как вывести список всех подкаталогов внутри основного каталога с помощью модуля glob:

import os
from glob import glob
glob(os.getcwd() + "/*/", recursive = True)

Выход:

['/content/sample_data/', '/content/subdirectory/']

Мы перечислили все подкаталоги нашего текущего рабочего каталога с модулем glob в приведенном выше коде. Недостатком этого метода является то, что он не отображает скрытый каталог или каталог, имя которого начинается с точки .; он показывает только ближайшие подкаталоги.

Список подкаталогов с помощью функции os.scandir() в Python

os - это встроенный модуль в Python, который может использоваться для многих функций, связанных с операционной системой, таких как хранение файлов. Функция os.scandir() может использоваться для вывода списка всех подкаталогов указанного основного каталога. Эта функция принимает путь к каталогу в качестве входного параметра и возвращает итератор, который можно использовать для перебора файлов и каталогов внутри пути.

Следующий фрагмент кода показывает нам, как вывести список всех подкаталогов внутри основного каталога с помощью функции os.scandir():

import os
[f.path for f in os.scandir(os.getcwd()) if f.is_dir()]

Выход:

['/content/.config',
 '/content/.ipynb_checkpoints',
 '/content/sample_data',
 '/content/subdirectory']

Мы перечислили все подкаталоги нашего текущего рабочего каталога с помощью функции os.scandir() в приведенном выше коде. Этот процесс является улучшением по сравнению с предыдущим подходом, поскольку он также перечисляет скрытые каталоги или каталоги, в которых имя каталога начинается с точки .. Единственным недостатком этого метода является то, что он показывает только непосредственные дочерние каталоги основного родительского каталога. Подкаталоги внутри основного каталога не попадают.

Список подкаталогов с помощью функции os.walk() в Python

Функция os.walk() - это еще один метод, который можно использовать для вывода списка всех подкаталогов внутри одного основного каталога в Python. Функция os.walk() принимает путь к основному каталогу в качестве входного параметра и возвращает набор кортежей, где первый элемент каждого кортежа - это путь к подкаталогу внутри дерева каталогов. Сюда входят все подкаталоги и их подкаталоги до конца дерева каталогов.

Функция os.walk() также дает нам скрытые каталоги или каталоги, в которых имя каталога начинается с точки .. Следующий фрагмент кода показывает нам, как вывести список всех подкаталогов внутри основного каталога с помощью функции os.walk():

import os
[x[0] for x in os.walk(os.getcwd())]

Выход:

['/content',
 '/content/.config',
 '/content/.config/logs',
 '/content/.config/logs/2021.05.06',
 '/content/.config/configurations',
 '/content/.ipynb_checkpoints',
 '/content/sample_data',
 '/content/sample_data/.ipynb_checkpoints',
 '/content/sample_data/subsubdirectory',
 '/content/subdirectory']

Мы перечислили все подкаталоги нашего текущего рабочего каталога с помощью функции os.scandir() в программе выше. Как мы видим, вывод показывает все каталоги внутри дерева каталогов. Результат также включает все скрытые каталоги.

Несмотря на то, что подход os.walk() показывает нам все подкаталоги и подкаталоги со всеми скрытыми каталогами, все методы, описанные выше, имеют свои собственные уникальные варианты использования и полезны в различных сценариях. Лучший из рассмотренных нами подходов зависит от конкретной проблемы, которую вы пытаетесь решить.

Сопутствующая статья - Python Directory

  • Открыть все файлы в каталоге в Python