makedirs для рекурсивного создания глубоких иерархических каталогов в Python

Бизнес

Ошибка при создании нового каталога с помощью os.mkdir() в несуществующем каталоге

os.mkdir()Это метод, используемый для создания каталога (папки) в Python. Если вы попытаетесь создать новый каталог в несуществующем каталоге, возникнет ошибка.(FileNotFoundError)

import os

os.mkdir('not_exist_dir/new_dir')
# FileNotFoundError

Создавайте каталоги рекурсивно с помощью os.madeirs()

Если вы используете os.makedirs() вместо os.mkdir(), будет создан промежуточный каталог, так что вы можете рекурсивно создать глубокий иерархический каталог.

os.makedirs('not_exist_dir/new_dir')

В данном примере он создаст их все сразу. Это нормально, если есть несколько новых промежуточных каталогов.

  • промежуточный каталог: not_exist_dir
  • конечный каталог: new_dir

Однако если конечный каталог уже существует, возникнет ошибка.(FileExistsError)

os.makedirs('exist_dir/exist_dir')
# FileExistsError

Если есть аргумент exist_ok

Начиная с Python 3.2, был добавлен аргумент exist_ok, и если exist_ok=True, то ошибки не произойдет, даже если конечный каталог уже существует. Если конечный каталог не существует, будет создан новый, а если он существует, то ничего не будет сделано. Это удобно, так как не нужно заранее проверять существование конечного каталога.

os.makedirs('exist_dir/exist_dir', exist_ok=True)

Если аргумент exist_ok отсутствует

Если у вас более старая версия Python и в os.madeirs отсутствует аргумент exist_ok, вы можете использовать os.path.exists для определения наличия или отсутствия конечного каталога, а затем создать новый каталог только в том случае, если конечного каталога нет.

if not os.path.exists('exist_dir/exist_dir'):
    os.makedirs('exist_dir/exist_dir')
Copied title and URL