makedirs per creare directory gerarchiche profonde in modo ricorsivo in Python

Attività commerciale

Errore quando si crea una nuova directory con os.mkdir() in una directory inesistente

os.mkdir()Questo è il metodo usato per creare una directory (cartella) in Python. Se cercate di creare una nuova directory in una directory inesistente, si verificherà un errore.(FileNotFoundError)

import os

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

Creare le directory in modo ricorsivo con os.madeirs()

Se usate os.makedirs() invece di os.mkdir(), creerà una directory intermedia, così potete creare ricorsivamente una profonda directory gerarchica.

os.makedirs('not_exist_dir/new_dir')

Nel caso di questo esempio, le creerà tutte in una volta. Va bene se ci sono più nuove directory intermedie.

  • elenco intermedio: not_exist_dir
  • elenco finale: new_dir

Tuttavia, se la directory finale esiste già, si verificherà un errore.(FileExistsError)

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

Se c'è un argomento exist_ok

A partire da Python 3.2, è stato aggiunto l'argomento exist_ok, e se exist_ok=True, non si verifica alcun errore anche se la directory finale esiste già. Se la directory finale non esiste, ne verrà creata una nuova, e se esiste, non verrà fatto nulla. Questo è comodo perché non è necessario controllare l'esistenza della directory finale in anticipo.

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

Se manca l'argomento exist_ok

Se avete una vecchia versione di Python e non avete l'argomento exist_ok in os.madeirs, potete usare os.path.exists per determinare se c'è o meno una directory finale, e poi crearne una nuova solo se non c'è.

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