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)

Калі аргумент існуе_ок адсутнічае

Калі ў вас старэйшая версія 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