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

Как перечислить все файлы в каталоге в 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 разработчик