파이썬에서 현재 실행 중인 파일의 경로 및 이름 가져오기
두 가지 주요 방법을 살펴보겠습니다.
inspect 모듈 사용:
inspect
모듈은 파이썬 객체 및 프레임에 대한 정보를 제공하는 함수를 포함합니다. 이를 활용하여 현재 실행 중인 파일의 정보를 얻을 수 있습니다.
import inspect
# 현재 프레임 정보 가져오기
current_frame = inspect.currentframe()
# 프레임에서 파일 정보 추출
current_filename = inspect.getfile(current_frame)
# 파일 경로 및 이름 출력
print(f"현재 실행 중인 파일: {current_filename}")
os 및 sys 모듈 사용:
os
모듈은 운영 체제 관련 기능을 제공하며, sys
모듈은 시스템 관련 변수에 접근할 수 있도록 합니다. 이 두 모듈을 조합하여 현재 실행 중인 파일의 경로와 이름을 얻을 수 있습니다.
import os
import sys
# 현재 실행 중인 스크립트 파일 경로 가져오기
current_filename = os.path.abspath(sys.argv[0])
# 파일 경로 및 이름 출력
print(f"현재 실행 중인 파일: {current_filename}")
설명:
inspect.currentframe()
함수는 현재 실행 중인 스택 프레임을 반환합니다.inspect.getfile()
함수는 프레임 객체를 입력으로 받아 해당 프레임이 실행되는 파일에 대한 경로를 문자열로 반환합니다.os.path.abspath()
함수는 입력된 경로를 절대 경로로 변환합니다.sys.argv[0]
는 명령줄 인수의 첫 번째 요소이며, 일반적으로 실행되는 스크립트 파일의 경로를 나타냅니다.
주의 사항:
- 위 코드는 단일 파일로 실행되는 스크립트에 적합합니다. 모듈로 임포트된 스크립트의 경우 다를 수 있습니다.
- 상대 경로를 사용하는 경우, 실행되는 스크립트의 위치에 따라 경로 해석이 달라질 수 있습니다.
예제 코드
import inspect
def my_function():
# 현재 실행 중인 파일 경로 및 이름 출력
current_frame = inspect.currentframe()
current_filename = inspect.getfile(current_frame)
print(f"현재 실행 중인 파일: {current_filename}")
my_function()
import os
import sys
def my_function():
# 현재 실행 중인 파일 경로 및 이름 출력
current_filename = os.path.abspath(sys.argv[0])
print(f"현재 실행 중인 파일: {current_filename}")
my_function()
- 두 코드 모두
my_function
이라는 함수를 정의합니다. my_function
내부에서 앞서 설명한 방법 중 하나를 사용하여 현재 실행 중인 파일의 경로 및 이름을 출력합니다.- 코드를 실행하면 현재 실행 중인 스크립트의 경로와 이름이 출력됩니다.
주의:
추가 예제:
- 상대 경로를 사용하고 싶은 경우
os.path.relpath()
함수를 사용하여 현재 스크립트의 위치를 기준으로 파일 경로를 계산할 수 있습니다.
import os
current_filename = os.path.relpath("my_script.py")
print(f"현재 실행 중인 파일: {current_filename}")
- 여러 파일에서 동일한 코드를 사용하고 싶은 경우,
__file__
변수를 사용하여 현재 모듈의 파일 경로를 가져올 수 있습니다.
import os
current_filename = os.path.abspath(__file__)
print(f"현재 실행 중인 파일: {current_filename}")
대체 방법: __file__
변수 사용
__file__
변수란:
- 현재 모듈의 파일 경로를 문자열 형태로 저장하는 변수입니다.
- 대부분의 파이썬 스크립트 및 모듈에서 사용할 수 있습니다.
사용 방법:
# 현재 실행 중인 파일 경로 및 이름 출력
current_filename = __file__
print(f"현재 실행 중인 파일: {current_filename}")
__file__
변수는 현재 실행 중인 모듈의 파일 경로를 절대 경로로 반환합니다.
__file__
변수는 모듈로 실행되는 경우만 유효합니다. 단일 파일로 실행되는 스크립트에서는 사용하지 않는 것이 좋습니다.
장점:
- 간결하고 코드 작성이 용이합니다.
- 별도의 모듈을 임포트할 필요가 없습니다.
단점:
- 상대 경로를 제공하지 않습니다.
- 모듈로 실행되는 경우 경로 해석이 모듈 위치에 따라 달라질 수 있습니다.
사용 시나리오:
- 간단한 스크립트에서 현재 파일 경로를 빠르게 확인하고 싶을 때
- 모듈의 파일 경로를 기반으로 다른 작업을 수행하고 싶을 때
참고:
__file__
변수는inspect
모듈의getfile()
함수와 동일한 결과를 반환합니다.
python file reflection