>  기사  >  백엔드 개발  >  현재 실행 중인 Python 스크립트의 경로를 안정적으로 가져오려면 어떻게 해야 합니까?

현재 실행 중인 Python 스크립트의 경로를 안정적으로 가져오려면 어떻게 해야 합니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-26 18:30:03861검색

How Can I Reliably Get the Path of the Currently Executing Python Script?

Python에서 현재 실행 중인 파일의 경로 찾기

Python에서 현재 실행 스크립트의 경로를 얻는 것은 파일에 액세스하고 다양한 작업을 수행합니다. 그러나 특정 조건에서는 여러 접근 방식이 실패할 수 있습니다. 이 기사에서는 다양한 시나리오에서 파일 경로를 검색하는 신뢰할 수 있는 방법을 살펴봅니다.

기존 접근 방식의 과제

os.path.abspath(os. path.dirname(sys.argv[0])) 및 os.path.abspath(os.path.dirname(__file__))에는 제한이 있습니다. sys.argv[0]는 다른 Python 스크립트에서 실행할 때 올바른 경로를 제공하지 않을 수 있으며, __file__은 py2exe 스크립트, IDLE, Mac OS X 환경 및 유사한 인스턴스에서 사용하지 못할 수 있습니다.

A Universal 솔루션

이러한 문제를 해결하려면 검사 및 os 모듈을 활용하는 안정적인 접근 방식이 필요합니다.

<code class="python">from inspect import getsourcefile
from os.path import abspath</code>

getsourcefile(lambda:0)을 사용하면 다음의 소스 파일을 얻을 수 있습니다. 현재 실행 중인 람다 함수를 사용하여 다른 메서드의 한계를 효과적으로 우회합니다. 그런 다음 경로는 abspath를 사용하여 추출됩니다.

예제 시나리오

다음 디렉터리 구조를 고려하세요.

C:.
|   a.py
\---subdir
        b.py

a.py 포함:

<code class="python">from inspect import getsourcefile
from os.path import abspath

print("a.py: File Path =", abspath(getsourcefile(lambda:0)))
execfile("subdir/b.py")</code>

b.py 포함:

<code class="python">from inspect import getsourcefile
from os.path import abspath

print("b.py: File Path =", abspath(getsourcefile(lambda:0)))</code>

a.py를 실행하면 다음이 표시됩니다:

a.py: File Path = C:\a.py
b.py: File Path = C:\subdir\b.py

이 다양한 상황에서 파일 경로를 정확하게 얻는 능력을 보여줍니다.

위 내용은 현재 실행 중인 Python 스크립트의 경로를 안정적으로 가져오려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.