이전, 실행 시 sys.argv를 이용한 매개변수 인자값 전달받는 방법을 확인했다.
2023.03.18 - [프로그래밍/Python] - [Python] 파이썬 실행 시 매개변수 전달
단점이
1. 매개변수의 조건에 따라 코드가 길어지거나 더러워질 수 있어 가독성이 떨어진다.
2. 시간이 지나면 매개변수의 사용 조건을 까먹어서 코드를 다시 봐야 한다.
3. type 등을 지정할 수 없다.
등이 있었다.
argparse를 이용하여 좀 더 클린하게 실행값을 받아보자.
먼저 프로그램에 대한 설명문을 작성할 수 있다.
아래와 같이 코드를 작성하고 옵션으로 "-h" 또는 "--help"를 입력하여 실행해 보자.
# python main.py -h
import argparse
if __name__ == '__main__':
parser = argparse.ArgumentParser(
prog="간단한 계산기 프로그램",
description="더하기 빼기 기능만 존재합니다.",
epilog="만든이 https://park-duck.tistory.com"
)
parser.parse_args()
더하기 빼기를 하기 위한 인자값을 받아오는 코드를 작성해 보자.
import argparse
if __name__ == '__main__':
parser = argparse.ArgumentParser(
prog="간단한 계산기 프로그램",
description="더하기 빼기 기능만 존재합니다.",
epilog="만든이 https://park-duck.tistory.com"
)
parser.add_argument("-i", "--input", type=int, nargs=2, help="2개의 값을 입력하세요", required=True)
parser.add_argument("-c", "--calc", choices=["+", "-"], help="+ 또는 - 입력", required=True)
args = parser.parse_args()
if args.calc == "+":
print(args.input[0]+args.input[1])
elif args.calc == "-":
print(args.input[0]-args.input[1])
이후 실행 명령에 따른 결괏값이다.
--help
--input으 nargs를 2로 설정했기 때문에 -i INPUT INPUT으로 입력값 2개가 필요한 것을 확인할 수 있고, help로 한국어 설명까지 해주었다. 시간이 지나 소스코드를 잊어도 --help를 통해 프로그램을 기억해 낼 수 있다.
--calc는 중괄호로 되어있는데 + 또는 -를 입력할 수 있다.
참고로 nargs(Number of Arguments)의 값으로 +(하나이상), ?(선택 사항의 단일 값), *(모든 값) 등이 있다.
python main.py -h
프로그램 실행
python main.py -i 15 20 -c +
python main.py -i 15 20 -c -
이외 예외사항을 입력해 보자.
--input값 하나 입력(nargs) -> expected error
python main.py -i 15 -c +
--input값 type str 입력(type) -> invalid int value error
python main.py -i a 20 -c -
옵션 미싱(required) -> arguments required error
python main.py -i 15 20
자세한 건 아래의 링크 문서를 확인
https://docs.python.org/ko/3/library/argparse.html#module-argparse
'프로그래밍 > Python' 카테고리의 다른 글
[Python] 파일명 일괄 변경 (0) | 2023.08.20 |
---|---|
[Python] 파이썬 실행 시 매개변수 전달 (0) | 2023.03.18 |
[Python] 문장(String)에서 리스트 단어 찾기 (0) | 2022.12.08 |
[Python] 딕셔너리 리스트 특정 속성이 최대값/최소값 불러오기 (0) | 2022.12.08 |
[Python] Teachable Machine 이미지 프로젝트(Tensorflow Lite) (0) | 2022.12.07 |
댓글