import os os.mkdir(path, mode=0o777, *, dir_fd=None)
path
- имя каталога (str
путь в файловой системе),mode=0o777
- режимом доступа к каталогу,dir_fd=None
- дескриптор каталогаФункция mkdir()
модуля os
создает каталог с именем path
с режимом доступа к нему mode
. Аргумент path
может принимать объекты, представляющие путь файловой системы, такие как pathlib.PurePath
.
Если каталог уже существует, вызывается исключение FileExistsError
.
Если установлены биты, отличные от последних 9 (то есть последние 3 цифры восьмеричного представления режима), их значение зависит от платформы.
В некоторых системах режим mode
игнорируется и необходимо явно вызвать os.chmod()
, чтобы установить режим доступа. Там, где он используется, текущее значение umask
сначала маскируется.
Аргумент режима доступа mode
может принимать последние 3 цифры восьмеричного представления числа, например 0o755
. По умолчанию mode=0o777
. Также mode
может принимать одно или несколько из следующих значений, значения которых приведены в модуле stat
:
Изменено в Python 3.13: Windows теперь поддерживает режим
0o700
. Это неявно влияет наtempfile.mkdtemp()
и является средством устранения уязвимости CVE-2024-4030. Другие значенияmode
продолжают игнорироваться.
mode
:stat.S_ISUID
- Устанавливает бит идентификатора пользователя.stat.S_ISGID
- Устанавливает бит идентификатора группы. Этот бит имеет несколько специальных применений.S_IXGRP
, бит set-group-ID указывает на обязательную блокировку файла/записей (смотрите также S_ENFMT
).stat.S_ISVTX
- Липкий бит. Когда этот бит установлен в каталоге, это означает, что файл в этом каталоге может быть переименован или удален только владельцем файла, владельцем каталога или привилегированным процессом.stat.S_IRWXU
- Маска устанавливает для пользователя права rwx
.stat.S_IRUSR
- Владелец имеет разрешение на чтение.stat.S_IWUSR
- Владелец имеет разрешение на запись.stat.S_IXUSR
- Владелец имеет разрешение на исполнение.,stat.S_IRWXG
- Маска устанавливает для группы права rwx
.stat.S_IRGRP
- Группа имеет разрешение на чтение.stat.S_IWGRP
- Группа имеет разрешение на запись.stat.S_IXGRP
- Группа имеет разрешение на исполнение.stat.S_IRWXO
- Маска устанавливает для других (не в группе) права rwx
.stat.S_IROTH
- Другие имеет разрешение на чтение.stat.S_IWOTH
- Другие имеет разрешение на запись.stat.S_IXOTH
- Другие имеет разрешение на исполнение.stat.S_ENFMT
- Система V принудительно блокирует файлы. Этот флаг используется совместно с SISGID: блокировка файлов/записей применяется к файлам, для которых не установлен бит выполнения группы (SIXGRP),stat.S_IREAD
- Unix V7 синоним для S_IRUSR.stat.S_IWRITE
- Unix V7 синоним для S_IWUSR.stat.S_IEXEC
- Unix V7 синоним для S_IXUSR.Приведенные выше значения можно комбинировать побитовым ИЛИ '|'
, например stat.S_IRWXU|stat.S_IRGRP|stat.S_IXGRP|stat.S_IROTH
. Данная комбинация установит разрешение rwxr-xr--
для path
.
Эта функция также может поддерживать пути относительно дескрипторов каталогов dir_fd
.
Также возможно создание временных каталогов, смотрите функцию tempfile.mkdtemp()
модуля tempfile.
Функция os.mkdir()
вызывает событие аудита os.mkdir
с аргументами path
, mode
, dir_fd
.
>>> import os, stat >>> d = 'test_dir' >>> os.mkdir(d, 0o754) >>> os.path.isdir(d) # True >>> st = os.stat(d).st_mode >>> stat.filemode(st) # 'drwxrw-r--'
При создании нового каталога с помощью os.mkdir()
все родительские каталоги должны уже существовать:
import os dir_name = 'test_dir' print('Creating', dir_name) os.makedirs(dir_name) file_name = os.path.join(dir_name, 'example.txt') print('Creating', file_name) with open(file_name, 'wt') as f: f.write('example file') print('Cleaning up') os.unlink(file_name) os.rmdir(dir_name)