본문 바로가기
C.W.K.
Stream
Lesson 01 of 04 · published

sys.argv와 argparse — 표준 라이브러리로 CLI 세우기

~20 min · sys.argv, argparse, cli

Level 0호기심
0 XP0/93 lessons0/23 achievements
0/100 XP to next level100 XP to go0% complete

sys.argv는 명령행을 그대로 담은 목록이야. 0번은 실행한 프로그램 이름이고, 그 뒤의 인자는 아직 해석하지 않은 문자열이야. 위치 인자 한두 개만 받는 작은 도구에는 충분하지만 선택 항목·형 변환·검증·도움말이 생기면 argparse로 넘어가.

ArgumentParserinput처럼 이름만 주면 위치 인자, --input처럼 대시를 붙이면 선택 항목이 돼. 타입·기본값·choices·action을 선언하면 parse_args가 검증과 변환을 하고 이름공간을 돌려줘. --help도 자동으로 생겨.

하위 파서는 하나의 실행 파일 아래에 add·remove 같은 하위 명령을 묶어. 파서 정의는 CLI의 공개 계약이니 동작만큼 도움말과 오류도 사용자가 읽기 좋게 써.

Code

sys.argv를 직접 읽는 작은 스크립트·python
# script.py
import sys

print("script:", sys.argv[0])
print("args:", sys.argv[1:])

# python script.py hello world
# script: script.py
# args: ['hello', 'world']
가장 작은 argparse CLI·python
import argparse

parser = argparse.ArgumentParser(description="정수 처리.")
parser.add_argument("integers", type=int, nargs="+", help="합할 정수")
parser.add_argument("--verbose", action="store_true", help="verbose 출력")

args = parser.parse_args()

if args.verbose:
    print("summing:", args.integers)
print("total:", sum(args.integers))

# python script.py 1 2 3 4 --verbose
# summing: [1, 2, 3, 4]
# total: 10

# python script.py --help    자동 도움말 생성
위치 인자·선택 항목·타입·choices·python
import argparse

parser = argparse.ArgumentParser()

# Positional — 필수
parser.add_argument("input")

# Optional — 단축 + 긴 형태
parser.add_argument("-o", "--output", default="result.txt")

# 타입 변환 + 범위
parser.add_argument("--port", type=int, default=8000)

# 제한된 choice
parser.add_argument("--mode", choices=["dev", "prod"], default="dev")

# Boolean 플래그
parser.add_argument("--verbose", action="store_true")

# 카운팅 플래그 — -vvv → 3
parser.add_argument("-v", action="count", default=0)

args = parser.parse_args()
print(args)
하위 파서로 하위 명령 나누기·python
import argparse

parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers(dest="command", required=True)

# 'add' 서브커맨드
add_parser = subparsers.add_parser("add", help="두 숫자 더하기")
add_parser.add_argument("a", type=int)
add_parser.add_argument("b", type=int)

# 'multiply' 서브커맨드
mul_parser = subparsers.add_parser("multiply", help="두 숫자 곱하기")
mul_parser.add_argument("a", type=int)
mul_parser.add_argument("b", type=int)

args = parser.parse_args()

if args.command == "add":
    print(args.a + args.b)
elif args.command == "multiply":
    print(args.a * args.b)

# python script.py add 3 4         → 7
# python script.py multiply 3 4    → 12
# python script.py --help          서브커맨드 보여줌

External links

Exercise

argparse로 python tool.py [--verbose] [--count N] input output 형태를 만들어. inputoutput은 필수 위치 인자, count는 기본값 1인 정수, verbose는 플래그로 두고 도움말 문장을 써. --help와 여러 조합을 직접 실행해.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.