프로그래밍/Python

[Python] argparse를 이용한 파이썬 실행 시 매개변수 받기

Beginner:) 2023. 3. 18.
320x100

이전, 실행 시 sys.argv를 이용한 매개변수 인자값 전달받는 방법을 확인했다.

2023.03.18 - [프로그래밍/Python] - [Python] 파이썬 실행 시 매개변수 전달

 

[Python] 파이썬 실행 시 매개변수 전달

파이썬 input과 같은 함수로 유저에게 값을 직접 받을 수 있는데 파이썬을 실행시 값을 전달받을 수도 있다. 아래의 코드로 확인가능하다. import sys if __name__ == '__main__': print(sys.argv[0]) # main.py print(s

park-duck.tistory.com

 

단점이

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

 

 

반응형

댓글