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

От версия 3.2 на Python е добавен аргументът 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')
Copied title and URL