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')