Получение списка имен файлов и каталогов в Python.

Бизнес

Чтобы получить список имен файлов и каталогов (имен папок) в Python, используйте функцию модуля os.listdir().

os.listdir(path='.')
Возвращает список, содержащий имена записей в директории, указанной путем.
os — Miscellaneous operating system interfaces — Python 3.10.0 Documentation

Модуль os включен в стандартную библиотеку и не требует установки. Однако «import» необходим.

Здесь представлена следующая информация.

  • Получить список имен файлов и каталогов.
  • Получить только список имен файлов
  • Получить только список имен каталогов

Ниже приведен пример структуры файлов (каталогов).

.
└── testdir
    ├── dir1
    ├── dir2
    ├── file1
    ├── file2.txt
    └── file3.jpg

В дополнение к os.listdir(), вы также можете использовать модуль glob для получения списка имен файлов и каталогов (имен папок). glob позволяет задавать условия, используя подстановочные знаки (*) и т.д., и рекурсивно включать подкаталоги.

В Python 3.4 и более поздних версиях можно также получить список файлов и каталогов с помощью модуля pathlib, который может манипулировать путями как объектами. Как и globs выше, его можно использовать условно и рекурсивно.

Получить список имен файлов и каталогов.

Если вы используете os.listdir() как есть, он вернет список имен как файлов, так и каталогов.

import os

path = "./testdir"

files = os.listdir(path)
print(type(files))  # <class 'list'>
print(files)        # ['dir1', 'dir2', 'file1', 'file2.txt', 'file3.jpg']

Вы получите список строк пути.

Получить только список имен файлов

Если вы хотите получить список только имен файлов, используйте функцию os.path.isfile(), чтобы определить, является ли путь файлом. Передача только имени файла в качестве аргумента функции os.path.isfile() не будет работать, поэтому передавайте полный путь, как показано ниже.
os.path.isfile(os.path.join(path, f))

files = os.listdir(path)
files_file = [f for f in files if os.path.isfile(os.path.join(path, f))]
print(files_file)   # ['file1', 'file2.txt', 'file3.jpg']

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

Если вы хотите получить только список имен каталогов, используйте os.path.isdir() таким же образом.

files = os.listdir(path)
files_dir = [f for f in files if os.path.isdir(os.path.join(path, f))]
print(files_dir)    # ['dir1', 'dir2']
Copied title and URL