makedirs k rekurzivnímu vytváření hlubokých hierarchických adresářů v jazyce Python

Podnikání

Chyba při vytváření nového adresáře pomocí os.mkdir() v neexistujícím adresáři

os.mkdir()Tato metoda se používá k vytvoření adresáře (složky) v jazyce Python. Pokud se pokusíte vytvořit nový adresář v neexistujícím adresáři, dojde k chybě.(FileNotFoundError)

import os

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

Vytváření adresářů rekurzivně pomocí os.madeirs()

Pokud místo os.mkdir() použijete os.makedirs(), vytvoří se meziadresář, takže můžete rekurzivně vytvořit hluboký hierarchický adresář.

os.makedirs('not_exist_dir/new_dir')

V případě tohoto příkladu se vytvoří všechny najednou. Je v pořádku, pokud existuje více nových mezilehlých adresářů.

  • mezilehlý adresář: not_exist_dir
  • závěrečný adresář: new_dir

Pokud však koncový adresář již existuje, dojde k chybě.(FileExistsError)

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

Pokud existuje argument exist_ok

Od verze Python 3.2 byl přidán argument exist_ok, a pokud exist_ok=True, nedojde k chybě, ani když koncový adresář již existuje. Pokud koncový adresář neexistuje, bude vytvořen nový, a pokud existuje, nebude provedeno nic. To je výhodné, protože nemusíte existenci koncového adresáře předem ověřovat.

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

Pokud chybí argument exist_ok

Pokud máte starší verzi jazyka Python a nemáte v souboru os.madeirs argument exist_ok, můžete pomocí souboru os.path.exists zjistit, zda existuje koncový adresář, a pouze v případě, že neexistuje, vytvořit nový adresář.

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