Вы также можете создать каталог, если его там нет.
Источник , если он все еще там на SO.
================================================== ===================
На Python ≥ 3.5 используйте pathlib.Path.mkdir:
from pathlib import Path
Path("/my/directory").mkdir(parents=True, exist_ok=True)
Для более старых версий Python я вижу два ответа с хорошими качествами, каждый с небольшим недостатком, поэтому я сделаю это:
Попробуйте os.path.existsи рассмотрите os.makedirsдля создания.
import os
if not os.path.exists(directory):
os.makedirs(directory)
Как отмечено в комментариях и в других местах, существует условие состязания - если каталог создается между вызовами os.path.existsи os.makedirsвызовами, os.makedirsпроизойдет сбой с помощью OSError. К сожалению, общий поиск OSErrorи продолжение не являются надежными, так как они будут игнорировать сбой при создании каталога из-за других факторов, таких как недостаточные разрешения, полный диск и т. Д.
Один из вариантов - перехватить OSErrorи изучить встроенный код ошибки (см. Существует ли кроссплатформенный способ получения информации из Python OSError ):
import os, errno
try:
os.makedirs(directory)
except OSError as e:
if e.errno != errno.EEXIST:
raise
В качестве альтернативы, может быть второй os.path.exists , но предположим, что другой создал каталог после первой проверки, а затем удалил его до второй проверки - нас все еще можно обмануть.
В зависимости от приложения опасность одновременных операций может быть больше или меньше опасности других факторов, таких как права доступа к файлам. Разработчик должен знать больше о конкретном разрабатываемом приложении и его ожидаемой среде, прежде чем выбирать реализацию.
Современные версии Python немного улучшают этот код, предоставляя FileExistsError(в версии 3.3+ ) ...
try:
os.makedirs("path/to/directory")
except FileExistsError:
# directory already exists
pass
... и позволяя ключевому аргументу os.makedirsвызыватьсяexist_ok (в 3.2+).
os.makedirs("path/to/directory", exist_ok=True) # succeeds even if directory exists.
os.statвместо этого, чтобы увидеть, существует ли каталог и является ли каталог одновременно.