Python Glossary English

Python 3.4+pathlibфункция

.mkdir()

операции

Создаёт каталог. `parents=True` доводит промежуточные каталоги, `exist_ok=True` не считает ошибкой уже существующий.

Синтаксис

p.mkdir(parents=True, exist_ok=True)

Без parents=True отсутствующий родитель даёт FileNotFoundError, а не FileExistsError — ошибки разные, и при отладке их легко перепутать. exist_ok=True прощает только уже существующий каталог; если по этому пути лежит обычный файл, FileExistsError всё равно прилетит. Проверять exists() перед вызовом не нужно и даже хуже: между проверкой и созданием каталог может появиться, а exist_ok=True закрывает эту гонку.

Примеры

from pathlib import Path
Path('new_dir').mkdir(exist_ok=True)
print(Path('new_dir').is_dir())   # → True
Path('a/b/c').mkdir(parents=True, exist_ok=True)
print(Path('a/b/c').is_dir())   # → True (parents=True создаёт всю цепочку)
try:
    Path('new_dir').mkdir()
except FileExistsError as e:
    print(type(e).__name__)   # → FileExistsError (без exist_ok=True)
try:
    Path('x/y/z').mkdir()
except FileNotFoundError as e:
    print(type(e).__name__)   # → FileNotFoundError (без parents=True)

См. также

Частые ошибки

Открыть в полном глоссарииdocs.python.orgСообщить о неточности