Подписка на блог

Customize in /user/extras/subscribe-sheet.tmpl.php.

Sample text.

Twitter, Facebook, VK icon VK, Telegram, LinkedIn, Odnoklassniki, Pinterest, РСС JSON Feed

Sample text.

Определяем подкаталоги в текущем каталоге

Обозначим текущий каталог для работы:

path = "./"

Способ 1

Вытаскиваем все файлы из каталога:

import os
os.listdir(path) # не включает специальные записи '.' и '..'

Результат выполнения:

['4.txt',
 'some_module.py',
 '0.txt',
 '.txt',
 '2.txt',
 'Подкаталоги в текущем каталоге.ipynb',
 'командная_оболочка.ipynb',
..

Самый простой способ определить подкаталог:

import os

dir_list = []
for item in os.listdir(path):
    if os.path.isdir(item):
        dir_list.append(item)

dir_list

Результат выполнения:

['__pycache__', 'ipython', '.ipynb_checkpoints']

Способ 2
Для глубокого анализа содержимого каталога лучше использовать функцию scandir, которая возвращает итератор:

dir_list = []

with os.scandir(path) as it: # лучше использовать менеджер контекста, чтобы освободить ресурсы
    for entry in it:
        if entry.is_dir(): # здесь есть нужный нам метод
            dir_list.append(entry.name)

dir_list

Способ 3

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

from pathlib import Path
p = Path(path)
type(p)

Результат выполнения:

pathlib.PosixPath

Модуль работает с типом данных pathlib.PosixPath, но мы ничего не боимся и смело преобразуем все в строку:

[str(x) for x in p.iterdir() if x.is_dir()]

Про pathlib можно подробнее почитать тут.

Способ 4

Двигаемся дальше и воспользуемся возможностями оболочки IPython:

!ls -a ./

Можем получить содержимое каталога и оставить в нем только подкаталоги (про grep писал ранее тут):

file_list = !ls -a ./
file_list.grep(os.path.isdir) # os.path.isfile

Результат выполнения:

['.', '..', '.ipynb_checkpoints', 'ipython', '__pycache__']

см. код в Блокноте Jupyter

Подписаться на блог
Поделиться
Отправить
 58   1 мес   Linux   Python
Популярное