Отрицание в 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 (), хотя подумал, что там что-то подобное.
Дэвид Малдер

Ответы:

229

Оператор отрицания в Python есть not. Поэтому просто заменить вашу !с not.

Для вашего примера сделайте это:

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

Для вашего конкретного примера (как сказал Нейл в комментариях) вам не нужно использовать 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(...). То же самое касается &&и того, ||что есть andи orв Python.

Cat Plus Plus
источник
12

попробуйте вместо:

if not os.path.exists(pathName):
    do this
mshell_lauren
источник
1

Комбинируя вклад от всех остальных (не используйте, не используйте паренсы, используйте os.mkdir), вы получите ...

specialpathforjohn = "/usr/share/sounds/blues"
if not os.path.exists(specialpathforjohn):
    os.mkdir(specialpathforjohn)
chmullig
источник
1
Ваш код (и ОП) - это случайность, которая должна произойти - два экземпляра длинной буквенной строки, которая предположительно должна быть идентична. И, пожалуйста, не отвечайте, что это всего лишь пример - это ПЛОХОЙ пример для новичков.
Джон Мачин