Python 강좌 / argparse로 명령줄 프로그램 만들기
argparse는 명령줄 인수의 이름·자료형·기본값·허용값을 정의하고 도움말과 오류 안내를 만드는 표준 모듈입니다. 프로그램 내부의 계산과 인수 해석을 분리하면 명령줄 도구를 테스트하기 쉽습니다.
위치 인수와 옵션 구분하기
위치 인수는 명령에서 순서로 전달하고 --currency 같은 옵션은 이름으로 전달합니다. nargs="+"는 하나 이상의 값을 받습니다. type은 변환 함수를 지정하고 choices는 허용 목록을 제한합니다. 옵션을 추가한다고 비밀번호를 명령줄에 넣어도 안전해지는 것은 아닙니다.
관련 동작과 지원 조건은 argparse로 명령줄 프로그램 만들기 관련 공식 문서에서 확인할 수 있습니다.
프로세스 목록과 셸 기록에 인수가 남을 수 있으므로 토큰·비밀번호는 별도 입력과 비밀 관리 방식을 사용합니다. 파일 경로에 공백이 있으면 셸에서 따옴표로 하나의 인수로 묶습니다.
전체 예제와 실행 결과
별도의 실습 폴더에서 아래 파일을 UTF-8로 저장합니다. 가상환경을 선택한 터미널에서 python sum_cli.py 3500 8000 2500 명령으로 실행합니다. macOS·Ubuntu에서 가상환경을 사용하지 않는 경우 명령 이름을 python3으로 바꿉니다.
sum_cli.py 파일의 전체 내용입니다.
import argparse
def nonnegative(text):
try:
value = int(text)
except ValueError as error:
raise argparse.ArgumentTypeError("expected an integer") from error
if value < 0:
raise argparse.ArgumentTypeError("expected a nonnegative amount")
return value
def main():
parser = argparse.ArgumentParser(description="Sum expense amounts")
parser.add_argument("amounts", type=nonnegative, nargs="+")
parser.add_argument("--currency", choices=["KRW", "USD"], default="KRW")
args = parser.parse_args()
print(f"{sum(args.amounts):,} {args.currency}")
if __name__ == "__main__":
main()
예상 결과는 다음과 같습니다.
14,000 KRW
도움말·입력 오류·종료 코드
python sum_cli.py --help python sum_cli.py 0 500 --currency KRW
두 번째 명령은 500 KRW를 출력합니다. --currency EUR는 choices 검사에서 실패합니다. 음수와 문자는 nonnegative가 오류를 설명하고 argparse가 사용법과 함께 종료합니다. 일반적인 인수 오류 종료 코드는 2이므로 다른 프로그램에서도 실패 여부를 판단할 수 있습니다.
도구를 확장할 때의 설계
명령이 늘어나면 init·add·list 같은 하위 명령을 subparsers로 나눌 수 있습니다. 계산 함수를 argparse Namespace에 직접 의존시키지 않고 필요한 값만 넘기면 웹 화면이나 테스트에서도 재사용하기 쉽습니다.
0, 음수, 인수 없음, 잘못된 통화, --help를 각각 시험합니다. 사용법 출력은 실행 파일 경로나 버전에 따라 조금 달라질 수 있으므로 테스트는 핵심 의미와 종료 코드를 확인합니다.




