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

Бизнес

За да получите списък с имена на файлове и директории (имена на папки) в Python, използвайте функцията os.listdir() на модула os.

os.listdir(path='.')
Връща списък, съдържащ имената на записи в директорията, зададена от 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