>  기사  >  백엔드 개발  >  Python에서 os.path.exits()의 함정을 해결하는 방법

Python에서 os.path.exits()의 함정을 해결하는 방법

WBOY
WBOY앞으로
2023-05-16 17:58:271032검색

문제

때때로 비슷한 코드를 자주 볼 수 있습니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제