터미널에서 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=1
은 mode라는 변수를 정수 값 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")
--mode
→ python 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가 있는 파일 경로
-> 윈도우 작업 스케줄러 관련 글
'파이썬' 카테고리의 다른 글
Python 로깅 최적화 방법 (0) | 2025.03.28 |
---|---|
파이썬 퀀트투자(7): 재무제표 크롤링, 적재 (3) | 2024.10.12 |
파이썬 퀀트투자(6): 네이버금융 수정주가 크롤링, 적재 (4) | 2024.10.12 |
파이썬 퀀트투자(5): WICS 기준 섹터정보 크롤링, 적재 (2) | 2024.10.12 |
파이썬 퀀트투자(3): 한국거래소 개별종목 지표 크롤링 (3) | 2024.10.09 |
댓글