Сообщить об ошибке.

Функция makedirs() модуля os в Python

Создать директорию со всеми промежуточными каталогами

Синтаксис:

import os

os.makedirs(name, mode=0o777, exist_ok=False)

Параметры:

  • name - имя каталога (str путь в файловой системе),
  • mode=0o777 - режимом доступа к каталогу,
  • exist_ok=False - bool, управление ошибкой.

Возвращаемое значение:

  • None

Описание:

Функция makedirs() модуля os рекурсивно создает все промежуточные каталоги, если они не существуют. Функция работает подобно os.mkdir(), но создает все каталоги промежуточного уровня, необходимые для хранения конечного каталога.

Параметр mode передается в функцию os.mkdir() для создания конечного каталога. Чтобы установить биты прав доступа к файлам, любых вновь созданных родительских каталогов, можно установить umask перед вызовом os.makedirs(). Биты прав доступа к файлам существующих родительских каталогов не изменяются.

Изменено в Python 3.13: Windows теперь поддерживает режим 0o700. Это неявно влияет на tempfile.mkdtemp() и является средством устранения уязвимости CVE-2024-4030. Другие значения mode продолжают игнорироваться.

Если exist_ok имеет значение False (по умолчанию) и целевой каталог уже существует, то возникает ошибка FileExistsError.

Заметьте, что функция os.makedirs() запутается, если элементы пути для создания включают os.pardir, например '..' в системах UNIX. Эта функция правильно обрабатывает UNC-пути.

Аргумент name может принимать объекты, представляющие путь файловой системы, такие как pathlib.PurePath.

Вызывает событие аудита os.mkdir с аргументами path, mode, dir_fd.

Примеры использования:

>>> import os, stat
>>> d = 'a/b/c/d/test_dir'
>>> os.makedirs(d, 0o774)
>>> os.path.isdir(d)
# True

>>> st = os.stat(d).st_mode
>>> stat.filemode(st)
# 'drwxrwxr--'

>>> os.chdir(d)
>>> os.getcwd()
# '/home/docs-python/a/b/c/d/test_dir'