
In Python, puoi creare nuove directory (cartelle) con mkdir() e makedirs() nel modulo standard os.
- Crea una directory:
os.mkdir()
- Crea tutte le directory di livello intermedio:
os.makedirs()
Crea una directory:os.mkdir()
os.mkdir() crea una nuova directory (cartella).
Specificare una stringa di percorso per la nuova directory. Per ulteriori informazioni sulla vista delle stringhe di percorso, l’articolo seguente.
La stringa del percorso può contenere o meno un delimitatore finale (barra per UNIX e Mac, barra rovesciata per Windows)
La specifica di una directory esistente genera un errore (FileEx Error).
import os
new_dir_path = 'data/temp/new-dir'
os.mkdir(new_dir_path)
# os.mkdir(new_dir_path)
# FileExistsError: [Errno 17] File exists: 'data/temp/new-dir/'
Viene generato anche un errore (FileNotFoundError) durante la creazione di una nuova directory in una directory inesistente.
new_dir_path_recursive = 'data/temp/new-dir2/new-sub-dir'
# os.mkdir(new_dir_path_recursive)
# FileNotFoundError: [Errno 2] No such file or directory: 'data/temp/new-dir2/new-sub-dir'
Quando si utilizza os.mkdir(), le directory principali della directory da creare devono esistere. Per creare nuove directory contemporaneamente, utilizzare os.makedirs() descritto di seguito.
os.makedirs() crea tutte le directory di livello intermedio.
Per impostazione predefinita, viene generato un errore (FileExistsError) se viene specificata una directory esistente.
new_dir_path_recursive = 'data/temp/new-dir2/new-sub-dir'
os.makedirs(new_dir_path_recursive)
# os.makedirs(new_dir_path_recursive)
# FileExistsError: [Errno 17] File exists: 'data/temp/new-dir2/new-sub-dir'
Il parametro exist_ok (Python 3.2 o successivo)
Il parametro exist_ok è stato aggiunto a os.makedirs() in Python 3.2.
Se esiste_ok=True, puoi specificare una directory esistente senza errori. Nota che l’impostazione predefinita è exist_ok=False.
os.makedirs(new_dir_path_recursive, exist_ok=True)
Nelle versioni precedenti senza esistere_ok, usare try per gestire le eccezioni o usare os.path.isdir() per poter utilizzare la directory di destinazione esiste.
Gestisci le eccezioni con provare:
try:
os.makedirs(new_dir_path_recursive)
except FileExistsError:
pass
Verifica l’esistenza di una directory con os.path.isdir():
def my_makedirs(path):
if not os.path.isdir(path):
os.makedirs(path)
my_makedirs(new_dir_path_recursive)