이번 포스팅은 다음의 링크들을 참고하여 작성하였다.

Argparse 모듈이란?

argparse 모듈은 커맨드 라인 인터페이스(Command-Line Interface, CLI) 상에서 파이썬 스크립트를 실행하는 경우에 파라미터를 함께 입력할 수 있게 하는 기능을 가진 모듈이다. 이 기능을 통해서 프로그래머가 아닌 사람들도 코드를 수정하는 작업없이 커맨드 라인 상에서 파라미터를 조절할 수 있다.

Argparse 모듈 설치

Argparse 모듈은 Python에 기본적으로 내장되어 있는 모듈이다. 설치가 되어있지 않더라도 다음의 명령을 통하여 쉽게 설치가 가능하다.

>>> pip install argparse

Argparse 사용 예제

간단한 예제를 통해서 Argparse 모듈의 활용법을 알아보자. 먼저 다음과 같은 계산기 함수를 Python으로 구현해보자.

def calc(x, y, operation):
    if operation == "add":
        return x + y
    elif operation == "sub":
        return x - y
    elif operation == "mul":
        return x * y
    elif operation == "div":
        return x / y

이 함수를 실행하기 위해서는 Python 스크립트 상에서 파라미터로 x, y, operation을 입력해주어야 한다. 이것을 Argparse 모듈을 이용하면 CLI 상에서 파라미터를 입력받을 수 있게 된다. 다음의 Python 메인 스크립트를 구현해보자.

def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("--x",
                        type=float,
                        default=1.0,
                        help="What is the first number?")
    parser.add_argument("--y",
                        type=float,
                        default=1.0,
                        help="What is the second number?")
    parser.add_argument("--operation",
                        type=str,
                        default="add",
                        help="What operation? Can choose add, sub, mul, or div")
    args = parser.parse_args()
    print(calc(args))

if __name__ == '__main__':
    main()

이 스크립트를 실행해보면 다음과 같은 에러 메시지가 뜬다.

>>> python argparse-practice.py
Traceback (most recent call last):
    File "argparse-practice.py", line 33, in <module>
        main()
    File "argparse-practice.py", line 30, in main
        print(calc(args))
TypeError: calc() missing 2 required positional arguments: 'y' and 'operation'

이것은 argsNamespace 자료형이기 때문에 발생한 에러이다. 따라서 계산기 함수를 다음과 같이 수정해준다.

def calc(args):
    if args.operation == "add":
        return args.x + args.y
    elif args.operation == "sub":
        return args.x - args.y
    elif args.operation == "mul":
        return args.x * args.y
    elif args.operation == "div":
        return args.x / args.y

다시 스크립트를 실행하면 다음과 같은 결과가 나온다.

>>> python argparse-practice.py
2.0

아직 파라미터를 입력하여 실행한 것이 아니기 때문에 디폴트로 설정된 결과가 실행되는 것을 확인할 수 있다. 파라미터를 넣어서 실행하면 다음과 같은 결과를 얻을 수 있다.

>>> python argparse-practice.py -h
usage: argparse-practice.py [-h] [--x X] [--y Y] [--operation OPERATION]

optional arguments:
    -h, --help              show this help message and exit
    --x, X                  What is the first number?
    --y, Y                  What is the second number?
    --operation OPERATION   What operation? Can choose add, sub, mul, or div

-h--help로 대체될 수 있다. 이것을 통해 입력받을 파라미터들의 이름, 그리고 각 파라미터들에 대한 설명들을 볼 수 있다. 이 설명들은 ArgumentParser 클래스를 생성할 때 add_argument를 이용하여 파라미터들을 추가할 때 help 파라미터를 통해서 입력해준 설명들이다. 그 다음으로 각 파라미터들을 입력한 결과를 살펴보자.

>>> python argparse-practice.py --x=5 --y=3 --operation=mul
15.0

결과가 정확히 나오는 것을 확인할 수 있다.


Go back to the List of Studies