Отримайте список імен файлів і каталогів у Python.

Бізнес

Щоб отримати список імен файлів і каталогів (імен папок) у Python, скористайтеся функцією модуля os os.listdir().

os.listdir(path=’.’)
Повертає список, що містить імена записів у каталозі, визначеному шляхом.
os — Miscellaneous operating system interfaces — Python 3.10.0 Documentation

Модуль os входить до стандартної бібліотеки і не потребує встановлення. Однак «імпорт» необхідний.

Тут наведено наступну інформацію.

  • Отримайте список імен файлів і каталогів.
  • Отримати лише список імен файлів
  • Отримати лише список імен каталогів

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

.
└── 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']