makedirs za rekurzivno ustvarjanje globokih hierarhičnih imenikov v Pythonu

Posel

Napaka pri ustvarjanju novega imenika z os.mkdir() v neobstoječem imeniku

os.mkdir()To je metoda, ki se uporablja za ustvarjanje imenika (mape) v Pythonu. Če poskušate ustvariti nov imenik v neobstoječem imeniku, se pojavi napaka.(FileNotFoundError)

import os

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

Rekurzivno ustvarjanje imenikov z os.madeirs()

Če namesto os.mkdir() uporabite os.makedirs(), se ustvari vmesni imenik, tako da lahko rekurzivno ustvarite globok hierarhični imenik.

os.makedirs('not_exist_dir/new_dir')

V tem primeru bo ustvaril vse naenkrat. Če je novih vmesnih imenikov več, je to v redu.

  • vmesni imenik: not_exist_dir
  • končni imenik: new_dir

Če končni imenik že obstaja, se pojavi napaka.(FileExistsError)

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

Če obstaja argument exist_ok

Od različice Python 3.2 je dodan argument exist_ok, in če je exist_ok=True, ne pride do napake, tudi če končni imenik že obstaja. Če končni imenik ne obstaja, bo ustvarjen nov, če pa obstaja, ne bo storjeno nič. To je priročno, saj vam ni treba vnaprej preverjati obstoja končnega imenika.

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

Če argument exist_ok manjka

Če imate starejšo različico programa Python in nimate argumenta exist_ok v os.madeirs, lahko uporabite os.path.exists, da ugotovite, ali obstaja končni imenik, in nato ustvarite novega le, če ga ni.

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