파이썬 argparse 모듈에서 버전 옵션과 필수 옵션 혼용하는법
ProgrammingPython
의 argparse
모듈은 C
의 getopt.h
처럼 명령 인자를 받아서 옵션으로 해석할 수 있도록 돕는 모듈이다.
기본적인 사용방법은 다음과 같다.
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--foo')
args = parser.parse_args()
문제는, --version
같은 옵션은 별 다른 옵션 없이 progname --version
형태로 전달하게 되면 일반적으로 정상적으로 버전을 출력하고 끝나는데, 항상 요구되는 Required
인자, 혹은 옵션이 전달되지 않은 경우 에러를 발생시키는 Positional argument
와 함께 사용하려하면 --version
옵션을 붙이고도 다른 요구사항을 만족시키지 못해 에러를 발생시키게 된다.
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('foo') # `foo` 가 제공되지 않으면 에러가 발생한다.
parser.add_argument('--version')
args = parser.parse_args() # 다음의 `version` 옵션 체크 이전에 에러가 발생하기 때문에 버전이 정상적으로 출력되지 못한다.
if args.version:
print(__version__)
이런 경우의 해결 방법은 action
어트리뷰트를 action='version'
으로 설정하고, version=__version__
처럼 version
어트리뷰트를 추가로 지정해주면 위와 같은 상황에서 에러를 발생시키지 않고, 버전을 정상 출력 한 뒤, 종료된다.
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('foo')
parser.add_argument('--version', action='version', version=__version__)
args = parser.parse_args() # "1.0.0"
# 아래 옵션 검사, 버전 출력 구문은 더 이상 필요없다
# if args.version:
# print(__version__)
'Programming' 카테고리의 다른 글
wget으로 curl 대체, curl로 wget 대체 하는 법 (0) | 2020.03.24 |
---|---|
CURL로 SSE (Server-Sent Event) 응답 받는법 (0) | 2020.03.23 |
Yarn 으로 파일 시스템 상의 패키지 설치하는법 (0) | 2020.03.20 |
두개의 명령어 출력을 하나로 합치는 방법 (0) | 2020.03.18 |
꼬리재귀(Tail Recursion)란 (0) | 2020.03.13 |