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

Якщо є аргумент, існує_ок

Починаючи з Python 3.2, аргумент exist_ok був доданий, і якщо exist_ok=True, жодної помилки не буде, навіть якщо кінцевий каталог уже існує. Якщо кінцевого каталогу не існує, буде створено новий, а якщо він існує, нічого не буде зроблено. Це зручно, оскільки вам не потрібно заздалегідь перевіряти наявність каталогу терміналу.

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

Якщо аргумент exist_ok відсутній

Якщо у вас є старіша версія Python і немає аргументу exist_ok в os.madeirs, ви можете використовувати os.path.exists, щоб визначити, чи є кінцевий каталог, а потім створити новий, лише якщо його немає. кінцевий каталог.

if not os.path.exists('exist_dir/exist_dir'):
    os.makedirs('exist_dir/exist_dir')