Чтобы получить список имен файлов и каталогов (имен папок) в 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']