2011-05-24 19 views
93

Yol mevcut değilse bir dizin oluşturmaya çalışıyorum ama! (değil) operatör çalışmıyor. Python'da nasıl reddedileceğinden emin değilim ... Bunu yapmanın doğru yolu nedir?Python'da Negasyon

if (!os.path.exists("/usr/share/sounds/blues")): 
     proc = subprocess.Popen(["mkdir", "/usr/share/sounds/blues"]) 
     proc.wait() 
+17

, neden kullanmak Python en 'os.mkdir() '? – Neil

+0

Os.mkdir() işlevinin farkında değildim, ancak bunun gibi bir şey olduğunu anladım. – David

cevap

134

olumsuzluk operatörü not olduğunu. Bu nedenle, !'u not ile değiştirin. (Neil yorumlar dedi gibi), subprocess modülü kullanmak gerekmez, sadece os.mkdir() kullanabilirsiniz özel Örneğin

if not os.path.exists("/usr/share/sounds/blues") : 
    proc = subprocess.Popen(["mkdir", "/usr/share/sounds/blues"]) 
    proc.wait() 

: En Örneğin

Bunu yapmak İhtiyacınız olan sonucu elde etmek için, istisna işleme ekliliği ile birlikte.

Örnek: herkes girdi birleştiren

blues_sounds_path = "/usr/share/sounds/blues" 
if not os.path.exists(blues_sounds_path): 
    try: 
     os.mkdir(blues_sounds_path) 
    except OSError: 
     # Handle the case where the directory could not be created. 
19

Python, noktalama işaretine İngilizce anahtar kelimeleri tercih eder. not x, yani not os.path.exists(...) kullanın. Aynı şey, && ve ||, and ve Python'da or için de geçerlidir.

7

yerine deneyin: Python

if not os.path.exists(pathName): 
    do this 
1

almak istiyorum (hiçbir parens, os.mkdir kullanmayın kullanın) ... Bu arada

specialpathforjohn = "/usr/share/sounds/blues" 
if not os.path.exists(specialpathforjohn): 
    os.mkdir(specialpathforjohn) 
+1

Kodunuz (ve OP'ler) gerçekleşmesini bekleyen bir kazadır - muhtemelen aynı olması gereken iki uzun harfli bir yazım dizesi. Ve lütfen bunun sadece bir örnek olduğunu itiraf etmeyin - bu yeni başlayanlar için bir BAD örneğidir. –