Programing

.py 소스 파일의 위치 가져 오기

lottogame 2020. 12. 25. 08:48
반응형

.py 소스 파일의 위치 가져 오기


다음 과 같이 디렉토리 e에 파이썬 파일이 있다고 가정 하십시오.

/a/b/c/d/e/file.py

디렉토리 e 아래 에 액세스하려는 폴더가 몇 개 있지만 file.py가 폴더 e아닌 다른 곳에서 실행 되면 상대 경로가 작동하지 않습니다. 또한 폴더 e 는 어디에나 위치 할 수 있지만 항상 하위 폴더 집합이 있으므로 절대 경로가 작동하지 않습니다.

첫째, 소스 파일 위치와 관련하여 절대 경로를 얻는 기능이 있습니까?

그렇지 않다면 이것을 분류하는 방법에 대한 아이디어가 있습니까? 사용 된 명령 줄을 잡고 CWD를 함께 추가 하시겠습니까?

여기서 내 문제는이 폴더가 20 개의 다른 컴퓨터와 OS에 설치되고 있으며 설치해야하는 "규칙"등의 작은 구성과 "규칙"등으로 가능한 한 동적이되기를 원한다는 것입니다.


# in /a/b/c/d/e/file.py
import os
os.path.dirname(os.path.abspath(__file__)) # /a/b/c/d/e

다음은 (a) .pyc 파일이 아닌 .py 파일을 가져오고 (b) 심볼릭 링크를 정렬하는 솔루션입니다.

Linux에서 작업 할 때 .py파일은 종종 다른 위치로 심볼릭 링크되고 .pyc파일은 심볼릭 링크 된 py 파일 옆의 디렉토리에 생성됩니다. 소스 파일 실제 경로를 찾으려면 소스 경로를 찾는 데 사용하는 스크립트의 일부입니다.

try:
    modpath = module.__file__
except AttributeError:
    sys.exit('Module does not have __file__ defined.')
    # It's a script for me, you probably won't want to wrap it in try..except

# Turn pyc files into py files if we can
if modpath.endswith('.pyc') and os.path.exists(modpath[:-1]):
    modpath = modpath[:-1]

# Sort out symlinks
modpath = os.path.realpath(modpath)

참조 URL : https://stackoverflow.com/questions/7162366/get-location-of-the-py-source-file

반응형