Python에서 현재 스크립트 이름 가져 오기
현재 실행중인 Python 스크립트의 이름을 얻으려고합니다.
스크립트 foo.py
가 있는데 스크립트 이름을 얻기 위해 이와 같은 작업을 수행하고 싶습니다.
print Scriptname
사용하십시오 __file__
. 존재하는 디렉토리 부분을 생략하려면을 사용할 수 있습니다 os.path.basename(__file__)
.
import sys
print sys.argv[0]
foo.py
for python foo.py
, dir/foo.py
for python dir/foo.py
등 을 인쇄 합니다 python
. 첫 번째 인수 입니다. (py2exe 후에는입니다 foo.exe
.)
주 __file__
주 파일에서 수입과 다를 수 있습니다이 코드 상주, 해석되는 파일을 제공 할 것입니다. 메인 파일을 얻기 위해 특수 __main__ 모듈을 사용할 수 있습니다.
import __main__ as main
print(main.__file__)
주의 __main__.__file__
는 휴대용하기 위해 위와 같이 파이썬 2.7이 아닌 3.2 작품, 그래서 수입과 같은 구문을 사용합니다.
완전성을 기하기 위해 다양한 가능한 결과를 요약하고 각각의 정확한 동작에 대한 참조를 제공하는 것이 가치가 있다고 생각했습니다.
__file__
공식 문서에 설명 된대로 현재 실행중인 파일입니다 .__file__
파일에서로드 된 경우 모듈이로드 된 파일의 경로 이름입니다.__file__
특성 등의 모듈, 특정 유형의 누락 될 수 C의 정적 인터프리터에 연결된 모듈; 공유 라이브러리에서 동적으로로드 된 확장 모듈의 경우 공유 라이브러리 파일의 경로 이름입니다.Python3.4에서 이후, 당 문제 18416 ,
__file__
현재 실행 파일 (안와 인터프리터를 통해 직접 실행 된 스크립트가 아닌, 항상 절대 경로-m
상대 경로를 사용하여 명령 행 옵션).__main__.__file__
(가져 오기가 필요함__main__
) 단순히 메인 모듈 의 예를 들어 명령 줄에서 호출 된 스크립트의__file__
속성에 액세스합니다 .sys.argv[0]
(가져 오기 필요sys
)는 명령 행에서 호출 된 스크립트 이름이며 공식 문서에 설명 된대로 절대 경로 일 수 있습니다 .argv[0]
스크립트 이름입니다 (전체 경로 이름인지 여부에 따라 운영 체제에 따라 다름).-c
인터프리터에 명령 행 옵션을 사용하여 명령을 실행 한argv[0]
경우 문자열로 설정됩니다'-c'
. Python 인터프리터에 스크립트 이름이 전달되지 않은 경우argv[0]
빈 문자열입니다.에서 언급 한 바와 같이 이 질문에 다른 답변 , 파이썬 과 같은 도구를 통해 단독 실행 프로그램으로 변환 된 스크립트 py2exe에 또는 pyInstaller 중에이 이 방법을 사용하는 경우 (즉, 원하는 결과를 표시하지 않을 수 있습니다
sys.argv[0]
이름이 아닌 실행 파일의 이름을 길게 것 해당 실행 파일 내의 기본 Python 파일).
os.path.basename()
실제 파일 이름을 추출하기 위해 위의 중 하나에서 호출 될 수 있습니다.
위의 답변이 좋습니다. 그러나 위의 결과를 사용 하여이 방법이 더 효율적이라는 것을 알았습니다.
이로 인해 실제 스크립트 파일 이름이 경로가 아닙니다.
import sys
import os
file_name = os.path.basename(sys.argv[0])
이 시도:
print __file__
최신 Python 버전의 Path(__file__).name
경우 더 관용적이어야합니다. 또한 확장명이 Path(__file__).stem
없는 스크립트 이름을 제공합니다 .py
.
sys의 첫 번째 인수는 현재 파일 이름이므로 작동합니다.
import sys
print sys.argv[0] # will print the file name
참고 : Python 3 이상을 사용하는 경우 대신 print () 함수를 사용해야합니다
파일 이름이이라고 가정하면 foo.py
아래 스 니펫
import sys
print sys.argv[0][:-3]
또는
import sys
print sys.argv[0][::-1][3:][::-1]
더 많은 문자를 가진 다른 확장명, 예를 들어 파일 이름 foo.pypy
import sys
print sys.argv[0].split('.')[0]
절대 경로에서 추출하려는 경우
import sys
print sys.argv[0].split('/')[-1].split('.')[0]
출력합니다 foo
비정상적인 가져 오기를 수행하는 경우 (예 : 옵션 파일) 다음을 시도하십시오.
import inspect
print (inspect.getfile(inspect.currentframe()))
이것은 파일의 절대 경로를 반환합니다.
내 더러운 더러운 해결책 :
__file__.split('/')[-1:][0]
os.path.abspath(__file__)
당신에게 절대 경로를 줄 것 relpath()
입니다.
sys.argv[-1]
상대 경로를 제공합니다.
OP가 현재 스크립트 파일의 이름을 요청했기 때문에 선호합니다
import os
os.path.split(sys.argv[0])[1]
참고 URL : https://stackoverflow.com/questions/4152963/get-name-of-current-script-in-python
'Programing' 카테고리의 다른 글
파이썬에서 문자열에서 한 문자 변경 (0) | 2020.03.04 |
---|---|
인쇄용 인라인 if 문을 작성하는 방법은 무엇입니까? (0) | 2020.03.04 |
사소한 키의 경우 unorder_map보다 map을 사용하면 어떤 이점이 있습니까? (0) | 2020.03.03 |
SQL Server에서 데이터베이스 목록 가져 오기 (0) | 2020.03.03 |
쉘에서 한 줄에 여러 명령 실행 (0) | 2020.03.03 |