본문 바로가기
파이썬

Python 터미널 명령어에서 인자 받기: argparse

by 데분노트 2025. 3. 28.

터미널에서 Python 스크립트를 실행할 때 특정한 파라미터(인자)를 입력해서 동작을 다르게 하고 싶을 때가 있습니다. 예를 들어, ETL(Extract, Transform, Load) 프로세스를 실행하는데 모드를 선택해서 실행하고 싶다면 다음과 같이 실행할 수 있습니다.

python main.py --mode=1

이 글에서는 Python에서 argparse 모듈을 활용하여 터미널에서 입력한 값을 받아오는 방법을 자세히 설명하겠습니다.

🔍 argparse란?

argparse는 Python에서 터미널에서 입력된 명령줄 인자(Command-line arguments)를 처리하기 위한 표준 라이브러리입니다. 이를 활용하면 사용자가 직접 입력한 값을 받아서 프로그램의 동작을 제어할 수 있습니다.

기본적으로 Python 프로그램을 실행하면 다음과 같이 동작합니다.

python main.py

하지만 argparse를 활용하면 특정 옵션을 추가하여 실행할 수 있습니다.

python main.py --mode=1

위 명령어에서 --mode=1mode라는 변수를 정수 값 1로 설정하는 역할을 합니다.

📝 기본 코드 예제: argparse로 인자 받아보기

터미널에서 --mode 값을 입력받아 실행하는 Python 코드 예제를 보겠습니다.

main.py

import argparse

# ETL 실행 함수
def run_etl(mode):
	if mode == 1:
		print(f"ETL process started with mode {mode}")
	if mode == 2:
		print(f"ETL process started with mode {mode}")

if __name__ == "__main__":
        # 1️⃣ argparse 객체 생성
        parser = argparse.ArgumentParser(description="Run the ETL process with a specific mode")

        # 2️⃣ 명령줄 인자 추가
        parser.add_argument("--mode", type=int, required=True, help="Mode to run the ETL process")

        # 3️⃣ 명령줄 인자 파싱
        args = parser.parse_args()

        # 4️⃣ 입력값 사용
        mode = args.mode  # 사용자가 입력한 --mode 값을 가져옴

        run_etl(mode)

🧐 코드 분석

코드에서 중요한 부분들을 하나씩 살펴보겠습니다.

1️⃣ argparse.ArgumentParser 객체 생성

parser = argparse.ArgumentParser(description="Run the ETL process with a specific mode")

argparse.ArgumentParser()를 사용하여 파라미터를 받을 준비을 합니다.

description="..." 부분은 도움말(--help 옵션 사용 시)에 표시될 설명입니다.

2️⃣ 명령줄 인자 추가 (add_argument())

parser.add_argument("--mode", type=int, required=True, help="Mode to run the ETL process")

--modepython main.py --mode=1에서 --mode라는 옵션을 받을 수 있도록 설정합니다.

  • type=int → 입력값을 정수(int)로 변환합니다.
  • required=True--mode를 반드시 입력하도록 강제합니다. (없으면 오류 발생)
  • help="..." → 도움말(python main.py --help 실행 시) 출력될 설명입니다.

3️⃣ 사용자가 입력한 값 파싱 (parse_args())

args = parser.parse_args()

이 코드가 실행되면 터미널에서 입력한 값을 자동으로 분석해서 args 객체에 저장됩니다. 즉, args.mode를 사용하면 사용자가 입력한 mode 값을 가져올 수 있습니다.

4️⃣ 받은 값 활용

mode = args.mode → 입력받은 mode 값을 변수에 저장하고, run_etl(mode)을 실행합니다.

🚀 실행 방법 및 결과 확인

✅ 1️⃣ 올바른 실행 예시

터미널에서 다음과 같이 실행하면 정상적으로 실행됩니다.

python main.py --mode=1

출력 결과

ETL process started with mode 1

🚨 2️⃣ --mode를 입력하지 않을 경우

만약 --mode 옵션을 생략하면 어떻게 될까요?

python main.py

오류 메시지

usage: main.py [-h] --mode MODE
main.py: error: the following arguments are required: --mode

🛠 3️⃣ 도움말 보기 (--help 옵션)

사용자가 프로그램 사용법을 알고 싶을 때 --help를 입력하면 도움말이 표시됩니다.

python main.py --help

출력 결과

usage: main.py [-h] --mode MODE

Run the ETL process with a specific mode

optional arguments:
  -h, --help  show this help message and exit
  --mode MODE  Mode to run the ETL process

🎯 argparse의 추가 기능

위 예제에서 --mode만 추가했지만, argparse는 더 많은 기능을 제공합니다.

옵션 설명
type=str 문자열 입력
default=값 인자를 입력하지 않았을 때 기본값 설정
choices=[값1, 값2] 입력값을 제한된 값으로 설정

 

이렇게 작업을 마쳤으면, 윈도우 작업 스케줄러에서 아래와 같이 세팅하면 원하는 시간대마다 자동으로  main.py라는 파일 하나에서 mode 별로 실행시킬 수 있습니다.

  • 프로그램/스크립트: 파일경로/python.exe
  • 인수추가: main.py --mode=1
  • 시작위치: main.py가 있는 파일 경로

-> 윈도우 작업 스케줄러 관련 글

 

댓글