Python'da Olumsuzlama


162

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

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

19
Bu arada, neden Python'ları kullanmıyorsunuz os.mkdir()?
Neil

1
Os.mkdir () işlevinin farkında değildim, ancak böyle bir şey olduğunu düşündüm.
David Mulder

Yanıtlar:


229

Python'daki olumsuzlama operatörü not. Bu nedenle Tıpkı yerini !ile not.

Örneğin, şunu yapın:

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

Özel örneğiniz için (Neil'in yorumlarda söylediği gibi), subprocessmodülü kullanmak zorunda değilsiniz os.mkdir(), ek istisna işleme iyiliği ekleyerek ihtiyacınız olan sonucu elde etmek için kullanabilirsiniz .

Misal:

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.

30

Python, İngilizce anahtar kelimeleri noktalama işaretine tercih eder. Kullanım not x, yani not os.path.exists(...). Aynı şey için de geçerli &&ve ||hangi vardır andve orPython.



1

Herkesin girdisini birleştirerek (değil, paren yok, kullan os.mkdir) elde edersiniz ...

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

1
Kodunuz (ve OP'ler) gerçekleşmeyi bekleyen bir kazadır - muhtemelen aynı olması gereken uzunca bir değişmez dizginin iki örneği. Ve lütfen bunun sadece bir örnek olduğunu tekrarlamayın - yeni başlayanlar için KÖTÜ bir örnek.
John Machin
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.