makedirs sügavate hierarhiliste kataloogide rekursiivseks loomiseks Pythonis

Äri

Viga uue kataloogi loomisel os.mkdir() abil olematus kataloogis

os.mkdir()Seda meetodit kasutatakse Pythonis kataloogi (kausta) loomiseks. Kui püüate luua uut kataloogi olematusse kataloogi, tekib viga.(FileNotFoundError)

import os

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

Luua kataloogid rekursiivselt os.madeirs() abil

Kui kasutate os.makedirs() asemel os.mkdir(), loob see vahekataloogi, nii et saate rekursiivselt luua sügava hierarhilise kataloogi.

os.makedirs('not_exist_dir/new_dir')

Selle näite puhul loob see kõik need korraga. See on OK, kui on mitu uut vahekataloogi.

  • vahekataloog: not_exist_dir
  • lõplik kataloog: new_dir

Kui lõppkataloog on aga juba olemas, tekib viga.(FileExistsError)

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

Kui on olemas argument exist_ok

Alates Python 3.2 on lisatud argument exist_ok ja kui exist_ok=True, ei teki viga isegi siis, kui lõppkataloog on juba olemas. Kui lõppkataloogi ei ole olemas, siis luuakse uus ja kui see on olemas, siis ei tehta midagi. See on mugav, sest lõppkataloogi olemasolu ei pea eelnevalt kontrollima.

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

Kui argument exist_ok puudub

Kui teil on Pythoni vanem versioon ja teil puudub os.madeirs'is argument exist_ok, võite kasutada os.path.exists'i, et teha kindlaks, kas lõppkataloog on olemas või mitte, ja luua uus kataloog ainult siis, kui lõppkataloogi ei ole.

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