2013-04-16 14 views
8

Ben mkdir komutu çalıştırmak istiyorum:Python'da -p seçeneğiyle os.mkdir() nasıl çalıştırılır?

mkdir -p directory_name 

yöntem Python ne olduğunu Var?

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

deneyin os.makedirs ('/ çoklu/yol /') – rajpy

+1

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

+0

Olası yinelenen arasında [Python'da mkdir -p işlevi] (http://stackoverflow.com/questions/600268/mkdir-p-functionality-in-python) –

cevap

21

Bu deneyebilirsiniz: Böyle

# 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 errno özelliğine sahip değil. – pynovice

+0

"İçe aktarma errno" –

+1

kodunun en üstüne eklenmelidir. Bu, os.mkdirs olmalıdır (son nokta önemlidir), ancak SO, böyle küçük bir düzenleme göndermeme izin vermez. –

12

şey:

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

UPD'yi: Bir yorumlarda söylenen gibi iplik güvenliği

için istisna için kontrol edilmesi gereken
try: 
    os.makedirs(directory_name) 
except OSError as err: 
    if err.errno!=17: 
     raise 
+2

Bu, doğal bir yarış koşuludur 7 ve bu nedenle * çok * kötü bir fikir. – Voo

+2

bu, yarış koşullarına eğilimlidir. Yani, eğer başka bir süreç/iş parçacığı 'if' sonra' 'ss.mkdirs''den sonra' directory_name' oluşturursa, bu kod istisna atar. –

0

buna ne dersin os.system('mkdir -p %s' % directory_name)

İlgili konular