Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг Управление проектами
07 Июл 2023
2 мин
788

Автоматическое создание директорий при работе с файлами в Python

Часто возникает ситуация, когда при работе с файлами в Python необходимо создать директорию, которая еще не существует. Вот типичный пример: В данном

Часто возникает ситуация, когда при работе с файлами в Python необходимо создать директорию, которая еще не существует. Вот типичный пример:

filename = "/foo/bar/baz.txt"

with open(filename, "w") as f:
    f.write("FOOBAR")

В данном случае, если директории /foo/bar не существует, будет выброшено исключение IOError. Это происходит потому что функция open в режиме записи ("w") не создает директории автоматически.

Итак, каким образом можно решить эту проблему?

Один из вариантов — использовать функции os.path.exists и os.mkdir. Сначала проверить существование директории, а затем ее создать. Но этот способ может быть довольно громоздким, если требуется создать цепочку вложенных директорий.

import os

filename = "/foo/bar/baz.txt"
dir_name = os.path.dirname(filename)

if not os.path.exists(dir_name):
    os.mkdir(dir_name)

with open(filename, "w") as f:
    f.write("FOOBAR")

Более удобным и «питоновским» способом будет использование функции os.makedirs. Эта функция позволяет создать все промежуточные директории в пути к файлу, если они еще не существуют.

import os

filename = "/foo/bar/baz.txt"
dir_name = os.path.dirname(filename)

os.makedirs(dir_name, exist_ok=True)

with open(filename, "w") as f:
    f.write("FOOBAR")

Параметр exist_ok=True говорит функции os.makedirs, что если директория уже существует, то ошибку выбрасывать не нужно.

Таким образом, при помощи функции os.makedirs можно автоматически создавать все необходимые директории при работе с файлами в Python.

Опрос для читателей: Какой язык программирования лучше? Узнайте результат после голосования

Добавить комментарий