makedirs za rekurzivno stvaranje dubokih hijerarhijskih direktorija u Pythonu

Poslovanje

Pogreška pri stvaranju novog direktorija s os.mkdir() u nepostojećem direktoriju

os.mkdir()Ovo je metoda koja se koristi za stvaranje direktorija (mape) u Pythonu. Ako pokušate stvoriti novi direktorij u nepostojećem direktoriju, pojavit će se pogreška.(FileNotFoundError)

import os

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

Kreirajte direktorije rekurzivno s os.madeirs()

Ako koristite os.makedirs() umjesto os.mkdir(), to će stvoriti međudirektorij, tako da možete rekurzivno kreirati duboki hijerarhijski direktorij.

os.makedirs('not_exist_dir/new_dir')

U slučaju ovog primjera, stvorit će ih sve odjednom. U redu je ako postoji više novih međudirektorija.

  • međuimenik:not_exist_dir
  • konačni imenik:new_dir

Međutim, ako krajnji direktorij već postoji, pojavit će se pogreška.(FileExistsError)

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

Ako postoji argument postoji_ok

Od Pythona 3.2, dodan je argument exist_ok, a ako exist_ok=True, neće se pojaviti pogreška čak i ako krajnji direktorij već postoji. Ako krajnji direktorij ne postoji, kreirat će se novi, a ako postoji, ništa se neće učiniti. To je zgodno jer ne morate unaprijed provjeravati postojanje terminalskog imenika.

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

Ako nedostaje argument exist_ok

Ako imate stariju verziju Pythona i nemate argument exist_ok u os.madeirs, možete koristiti os.path.exists da odredite postoji li ili ne krajnji direktorij, a zatim kreirate novi samo ako ne postoji krajnji imenik.

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