때때로 비슷한 코드를 자주 볼 수 있습니다.
assert os.path.isdir(path_model_dir) assert os.path.exits(path_model_dir)
상대 경로를 path_model_dir로 입력하면 재앙적인 결과가 발생합니다. 다음 요소에 주의해야 합니다.
os.path.exists() 메서드는 파일을 찾기 위해 sys.path의 경로를 직접 사용하지 않고 운영 체제의 경로를 호출하여 지정된 경로인지 확인합니다. 인터페이스가 존재합니다.
상대 경로를 사용할 때 Python은 먼저 이를 현재 작업 디렉터리에 대한 상대 경로로 해석합니다. 일반적으로 대화형 인터프리터의 현재 작업 디렉토리는 인터프리터가 시작된 디렉토리입니다.
위의 두 단락에서는 상대 경로를 입력하면 여기에 언급된 상대 경로는 현재 파일에 대한 상대 경로이거나 인터프리터 실행에 대한 상대 경로인지에 관계없이 인터프리터에 대한 상대 경로임을 설명합니다. , 또는 통역사 디버깅 또는 명령줄의 상대 경로? 예전에 같은 에디터에서 코드를 편집했는데, 실행 시 바로 실행이 되었는데, 디버깅할 때 계속 오류가 나더군요. 나중에 같은 에디터에서 디버깅하는 인터프리터와 실행 중인 인터프리터의 상대 경로가 다르다는 걸 발견했습니다(놀랍게도). !).
그리고 os.path.exists() 메서드는 파일을 찾기 위해 sys.path의 경로를 직접 사용하지 않으며, 파일을 찾기 위해 ~/.bashrc의 환경 변수를 사용하지도 않습니다. .파일을 찾아보세요.
두 가지 제안이 있습니다. 핵심은 절대 경로를 사용하는 것입니다.
문자열에 절대 경로를 직접 작성
(권장) __file__을 사용하여 스크립트 파일에 대한 상대 경로를 연결합니다.
어떤 사람들은 sys.path.append( 경로) 어떤 용도로 사용되나요? 실제로 여기에 추가된 경로는 주로 가져오기 패키지를 가져오는 데 사용됩니다. 즉, Python의 모듈 검색 경로에 추가 디렉터리를 추가하려는 경우 해당 디렉터리를 sys.path 목록에 추가할 수 있습니다. 그러면 Python이 모듈을 검색할 때 이러한 디렉터리를 자동으로 포함하게 됩니다. 그러나 이 메서드는 os.path.exists() 메서드를 호출할 때가 아니라 Python이 모듈을 가져올 때 사용된다는 점에 유의하세요.
위 내용은 Python에서 os.path.exits()의 함정을 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!