본문으로 건너뛰기
Python 기초집LESSON 23

argparse로 명령줄 프로그램 만들기

난이도입문
예상 시간30분
선수지식이전 강의

23강. argparse로 명령줄 프로그램 만들기

1. 이번 강의에서 해결할 문제​

코드 안의 경로를 매번 수정하면 자동화와 재사용이 어렵습니다. PowerShell 인자로 입력과 출력 정책을 전달하고 잘못된 사용법에는 도움말을 제공합니다.

2. 학습 목표​

3. 핵심 개념​

argparse는 sys.argv를 파싱하고 자동 도움말과 사용 오류를 제공합니다. CLI 진입점은 인자를 해석하고 도메인 함수에 전달하는 얇은 계층이어야 합니다. 계산 함수가 argparse에 의존하지 않으면 테스트가 쉽습니다.

4. 단계별 코드 예시​

파일 경로: C:\dev\game-log-analyzer\battle_analyzer\cli.py

battle_analyzer/cli.py
import argparse
from pathlib import Path


def build_parser() -> argparse.ArgumentParser:
parser = argparse.ArgumentParser(
description="게임 전투 로그를 분석해 밸런스 리포트를 만듭니다."
)
parser.add_argument("--input", required=True, type=Path, help="JSON 또는 CSV 로그")
parser.add_argument("--output", required=True, type=Path, help="리포트 저장 경로")
parser.add_argument(
"--format",
choices=("json", "csv"),
default="json",
help="출력 형식 (기본: json)",
)
parser.add_argument("--verbose", action="store_true", help="상세 로그 출력")
return parser


def main(argv=None) -> int:
args = build_parser().parse_args(argv)
print(args.input, args.output, args.format, args.verbose)
return 0

파일 경로: C:\dev\game-log-analyzer\main.py

main.py
from battle_analyzer.cli import main

if __name__ == "__main__":
raise SystemExit(main())
PowerShell · 실행
.\.venv\Scripts\python.exe .\main.py --help
.\.venv\Scripts\python.exe .\main.py --input .\data\battles.json --output .\reports\report.json --format json
$LASTEXITCODE

5. 코드가 동작하는 이유​

argparse는 문자열 인자를 Path로 변환하고 choices 밖의 값을 거부합니다. argv=None은 실제 명령줄을 사용하고 테스트에서는 문자열 목록을 주입할 수 있습니다. SystemExit에 반환 코드를 전달해 셸 자동화가 성공 여부를 판단합니다.

6. 자주 하는 실수와 해결법​

7. 직접 실습​

8. 이해 점검 질문 3개​

9. 핵심 요약​

MINI QUIZ

argparse로 명령줄 프로그램 만들기 미니 퀴즈

선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.

0 / 2
  1. 문제 1“argparse로 명령줄 프로그램 만들기”에서 다음 단계로 넘어가기 전에 확인할 핵심은 무엇인가요?
  2. 문제 2‘오류여도 0 반환’ 상태에 관한 “argparse로 명령줄 프로그램 만들기” 본문의 설명으로 가장 알맞은 것은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.

23강. argparse로 명령줄 프로그램 만들기 미완료 상태