argparse 사용하기

Tasker_Jang·6일 전

1. 기본 개념

argparse는 Python 표준 라이브러리입니다. CLI(커맨드라인 인터페이스)에서 인자를 파싱하는 모듈로, python main.py <경로> --no-summary --json 같은 명령어를 처리합니다.


2. 기본 사용법

import argparse

ap = argparse.ArgumentParser(description="프로그램 설명")

# 위치 인자 (필수)
ap.add_argument("path", help="문서 경로")

# 옵션 인자 (선택)
ap.add_argument("--no-summary", action="store_true", help="요약 생략")
ap.add_argument("--json",       action="store_true", help="JSON 출력")

args = ap.parse_args()
print(args.path)        # "파일.pdf"
print(args.no_summary)  # True / False
print(args.json)        # True / False

3. add_argument 주요 파라미터

# action="store_true" — 플래그가 있으면 True, 없으면 False
ap.add_argument("--verbose", action="store_true")

# type= — 입력값을 자동 형변환
ap.add_argument("--count", type=int, default=3)

# choices= — 허용 값 제한
ap.add_argument("--format", choices=["txt", "json", "docx"])

# required= — 옵션 인자를 필수로 지정
ap.add_argument("--key", required=True)

# nargs= — 여러 값 받기
ap.add_argument("--files", nargs="+")  # 1개 이상

4. 실제 실행 예시

# 위치 인자만
python main.py report.pdf

# 옵션 포함
python main.py report.pdf --no-summary
python main.py report.pdf --json
python main.py report.pdf --no-summary --json

# --help 자동 생성
python main.py --help
# usage: main.py [-h] [--no-summary] [--json] path
# doc-summary-agent 파이프라인
# positional arguments:
#   path         문서 경로 (PDF / DOCX / HWP / DOC)
# options:
#   --no-summary  Step1~2만 실행
#   --json        결과를 JSON으로 출력

5. sys.argv와의 비교

# sys.argv — 날것의 문자열 리스트, 직접 파싱해야 함
import sys
path = sys.argv[1]           # 인덱스로 직접 접근
flag = "--json" in sys.argv  # 수동으로 확인

# argparse — 자동 파싱 + 유효성 검사 + --help 자동 생성
import argparse
ap = argparse.ArgumentParser()
ap.add_argument("path")
ap.add_argument("--json", action="store_true")
args = ap.parse_args()       # 타입 검사, 필수값 누락 시 에러 자동 처리

6. 핵심 요약

항목내용
위치 인자add_argument("name") — 순서 기반, 필수
옵션 인자add_argument("--name")-- 접두사, 선택
플래그action="store_true" — 있으면 True
자동 제공--help 메시지 자동 생성
sys.argv 대비타입 검사·필수값 검증·help 자동화

한 줄 요약: argparse는 CLI 인자를 선언적으로 정의하고 자동 파싱·검증·help 생성까지 처리해주는 표준 라이브러리로, sys.argv 직접 파싱보다 안전하고 확장성이 높습니다.

profile
ML Engineer 🧠 | AI 모델 개발과 최적화 경험을 기록하며 성장하는 개발자 🚀 The light that burns twice as bright burns half as long ✨

0개의 댓글