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Сообщить о неточности