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