Python中的否定


162

如果路径不存在,我正在尝试创建目录,但是!(不是)运算符不起作用。我不确定如何在Python中取反...执行此操作的正确方法是什么?

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

19
顺便说一句,为什么不使用Python os.mkdir()
尼尔,

1
我不知道os.mkdir()函数,尽管我发现有类似的东西。
大卫·穆德

Answers:


229

Python中的求反运算符为not。因此,只需将替换!为即可not

对于您的示例,请执行以下操作:

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

对于您的特定示例(如Neil在评论中所述),您不必使用该subprocess模块,只需使用os.mkdir()即可获得所需的结果,并添加了异常处理优势。

例:

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更喜欢英文关键字而不是标点符号。使用not x,即not os.path.exists(...)。同样的事情会&&||它们andorPython编写的。



1

结合其他人的输入(不要使用,不要使用括号,使用os.mkdir),您会得到...

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

1
您的代码(和OP的代码)是一个等待发生的事故-一个较长的文字字符串的两个实例大概应该是相同的。而且请不要反驳这只是一个例子-这是新手的一个不好的例子。
约翰·马钦
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.