Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python으로 실행 중인 스크립트 이름을 출력하는 프로그램 만들기

개요

이번 글에서는 현재 실행 중인 파이썬(Python) 스크립트의 파일 이름을 화면에 출력하는 프로그램을 만들어 보겠습니다. 코딩 난이도는 매우 낮지만, 명령줄 인수가 프로그램에 어떻게 전달되는지 이해하기 좋은 예제입니다.

C 언어의 int main(int argc, char** argv)처럼 파이썬 역시 프로그램 실행 시 여러 인수를 전달받습니다. 다만 파이썬에서는 이를 sys.argv라는 리스트 형태로 제공합니다. 첫 번째 요소인 sys.argv[0]에는 실행 중인 스크립트의 경로와 파일 이름이 담겨 있고, 두 번째 요소부터는 프로그램에 전달된 실제 인수들이 순서대로 저장됩니다.

예제 코드

import sys

def main():
    # sys.argv[0]에는 실행 중인 스크립트의 전체 경로가 들어 있음
    my_program = sys.argv[0]

    # 마지막 경로 구분자 위치를 찾아 파일명만 추출
    index = max(my_program.rfind("\\"), my_program.rfind("/")) + 1

    # 파일명만 잘라내기(slicing)
    file_name = my_program[index:]

    print("Program Name:", file_name)

# 메인 블록
if __name__ == "__main__":
    main()

실행 결과

Program Name: python277.py

스크립트가 C:/Users/TP/Desktop/PYTHON FOLDER/python241-280/ 폴더에 저장되어 있다면 위와 같이 파일 이름만 깔끔하게 출력됩니다. 전체 경로까지 확인하고 싶다면 print(sys.argv[0])를 그대로 사용하면 됩니다.

코드 설명

  • sys.argv : 명령줄에서 전달된 인수를 담은 리스트입니다. 첫 번째 요소는 항상 실행 중인 스크립트의 경로를 가리킵니다.
  • rfind() : 특정 문자가 문자열에서 마지막으로 등장하는 위치를 반환합니다. 윈도우는 역슬래시(\), 리눅스와 macOS는 슬래시(/)를 경로 구분자로 사용하기 때문에 두 위치를 비교해 더 큰 값을 선택했습니다.
  • 문자열 슬라이싱 : 구분자 바로 다음 위치부터 문자열 끝까지 잘라내어 순수한 파일 이름만 남깁니다.
  • if __name__ == "__main__" : 스크립트를 직접 실행했을 때만 main() 함수가 동작하도록 하는 파이썬의 표준적인 패턴입니다.

더 간단한 방법 : os.path.basename()

경로를 직접 다루지 않고 os.path 모듈을 활용하면 한 줄로 해결할 수 있습니다. 운영체제에 상관없이 동작하므로 실무에서는 이 방식이 더 권장됩니다.

import sys
import os

print("Program Name:", os.path.basename(sys.argv[0]))

마무리

정리하면, 실행 중인 스크립트의 이름은 sys.argv[0]에서 얻을 수 있으며, 파일 이름만 필요하다면 문자열 슬라이싱이나 os.path.basename()으로 손쉽게 추출할 수 있습니다.