파이썬에서의 부정


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(...). 같은 일이 간다 &&하고 ||있는 있습니다 andor파이썬한다.



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.