Pythonでの否定


162

パスが存在しない場合、ディレクトリを作成しようとしていますが、!(not)演算子が機能しません。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()

特定の例(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)は、偶然に起こるのを待っています-おそらく同一であるはずの長い文字列の2つのインスタンス。また、これは単なる例であることを伝えないでください。初心者にとっては悪い例です。
John Machin、
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.