본문으로 건너뛰기
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로 명령줄 프로그램 만들기 미완료 상태