Статья

Как в Python получить список всех файлов в каталоге?

Один из часто задаваемых вопросов при работе с файловой системой в Python: как перечислить все файлы каталога и добавить их в list? Давайте перечислим основные методы решения.

Функция listdir()

os.listdir()возвращает все, что находится внутри переданного каталога, включая как файлы, так и каталоги.
Функция isfile() из модуля os.path может быть использована для фильтрации только файлов. Приведем пример совместного использования этих функций:
from os import listdir
from os.path import isfile, join
only_files = [f for f in listdir(my_path) if isfile(join(my_path, f))]

pathlib

Начиная с версии Python 3.4 пв библиотеке pathlib появились встроенные итераторы, которые намного эффективнее, чем os.listdir(). Пример использования:
import pathlib
only_files = [f for f in pathlib.Path(my_path).iterdir() if f.is_file()]

os.walk()

В качестве альтернативы предыдущим методам, os.walk() возвращает два списка для каждого каталога, который он посещает, один список – для файлов, второй список – для каталогов. Если вам нужен только верхнеуровневый каталог, вы можете прервать цикл в первой итерации:
from os import walk

only_files = []
for (dirpath, dirnames, filenames) in walk(my_path):
    only_files.extend(filenames)
    break
python