import os os.makedirs(name, mode=0o777, exist_ok=False)
name
- имя каталога (str
путь в файловой системе),mode=0o777
- режимом доступа к каталогу,exist_ok=False
- bool
, управление ошибкой.Функция 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'