2013-04-16 3 views
8

Voglio correre mkdir comando come:Come eseguire os.mkdir() con l'opzione -p in Python?

mkdir -p directory_name 

Qual è il metodo per farlo in Python?

os.mkdir(directory_name [, -p]) didn't work for me. 
+4

os.makedirs provare ('/ multipla/path /') – rajpy

+1

duplicato: http://stackoverflow.com/questions/600268/mkdir-p-functionality-in-python?rq=1 –

+0

Possibile duplicato [Funzionalità mkdir -p in Python] (http://stackoverflow.com/questions/600268/mkdir-p-functionality-in-python) –

risposta

21

Si può provare questo:

# top of the file 
import os 
import errno 

# the actual code 
try: 
    os.makedirs(directory_name) 
except OSError as exc: 
    if exc.errno == errno.EEXIST and os.path.isdir(directory_name): 
     pass 
+1

exc non ha attributo errno. – pynovice

+0

Si deve aggiungere all'inizio del codice 'import errno' –

+1

Questo dovrebbe essere os.mkdirs (il finale s è importante), ma SO non mi permette di inviare una modifica così piccola. –

12

Qualcosa di simile a questo:

if not os.path.exists(directory_name): 
    os.makedirs(directory_name) 

UPD: come si dice in un commento è necessario verificare la presenza di un'eccezione per la sicurezza dei thread

try: 
    os.makedirs(directory_name) 
except OSError as err: 
    if err.errno!=17: 
     raise 
+2

Questa è una condizione di razza intrinseca 7 e quindi una * pessima idea. – Voo

+2

questo è soggetto a condizioni di gara. Ad esempio, se qualche altro processo/thread crea 'directory_name' dopo' if' ma prima di 'os.mkdirs', questo codice genererà un'eccezione –

0

come circa questo os.system('mkdir -p %s' % directory_name)

Problemi correlati