파이썬에서의 부정


162

경로가 존재하지 않으면 디렉토리를 만들려고하는데! 연산자가 작동하지 않습니다. 파이썬에서 부정하는 법을 잘 모르겠습니다 ... 올바른 방법은 무엇입니까?

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

19
그건 그렇고, 왜 파이썬을 사용하지 os.mkdir()않습니까?
— Neil

1
os.mkdir () 함수를 알지 못했지만 그런 것이 있다고 생각했습니다.
— David Mulder

답변:


229

파이썬의 부정 연산자는 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

파이썬은 문장 부호보다 영어 키워드를 선호합니다. not x즉을 사용하십시오 not os.path.exists(...). 같은 일이 간다 &&하고 ||있는 있습니다 and및 or파이썬한다.



1

다른 사람들의 의견을 합치면 (파란 스를 사용하지 말고 사용하십시오 os.mkdir) ...

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

1
코드 (및 OP)는 우연히 발생하는 사고입니다. 길이가 긴 리터럴 문자열의 두 인스턴스는 동일해야합니다. 그리고 그것은 단지 예일 뿐이라는 것을 망설이지 마십시오. 초보자에게는 나쁜 예입니다.
— John Machin
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.