[Python] argparse 사용 예제

Python으로 작성한 코드를 실행할 때 특정 Argument를 추가해야만 실행이 가능하도록 코드를 작성하고 싶은 경우가 발생한다. Python에서 “argparse”를 사용하면 쉽게 Argument를 추가할 수 있다.

Argparse 사용하기

아래 코드1은 Argparse를 사용하는 예제 코드이다.

  • argparse.ArgumentParser(…): argparse를 사용하기 위해서 가장 먼저 해당 코드를 사용해서 Variable을 생성한다.
  • VARIABLE.add_argument(…): 생성된 Variable에 add_argument(..)를 사용해서 Argument 옵션을 하나씩 추가한다.

위 2가지가 Argparse를 사용하는 데 있어서 가장 중요하다고 판단되는 함수이다.

코드 1: Argparse 예제 코드

import argparse

class mkTest:
    def optionEnable(self, round):
        print("Enable Option " + str(round))
    def optionDisable(self, round):
        print("Disable Option " + str(round))

if __name__ == "__main__":
    mkTmp = mkTest()
#MK: 옵션을 추가 하는 방법
    mkParser = argparse.ArgumentParser(description="Show Options")
    mkParser.add_argument("--op", type=str, required=True, choices=["enable", "disable"], help="Enable/Disable Option")
    mkParser.add_argument("--numRound", type=int, required=False, default=1, help="Number of Round (Default = 1)")
    mkParser.add_argument("--option", action="store_true", help="Optional Flag")
    mkParser.add_argument("--optionA", type=int, help="if option is enabled, optionA must be required")
    mkArg = mkParser.parse_args()
#MK: option을 Enable하는 경우 optionA도 항상 Input으로 들어와야 실행됨.
    if mkArg.option and (mkArg.optionA is None):
        mkParser.error("--optionA is required field")
    if mkArg.op == "enable":
        for i in range(0, mkArg.numRound):
            mkTmp.optionEnable(i)
    else:
        for i in range(0, mkArg.numRound):
            mkTmp.optionDisable(i)

그림 1: 예제 코드 실행 결과

위 예제 코드1을 실행하면 그림 1과 같은 결과를 확인 할 수 있다.

  • mkParser.add_argument(..): 원하는 Input Argument 옵션을 추가한다. “Required” 옵션이 True인 경우 꼭 해당 Argument 옵션은 꼭 필요하다는 의미이다. “Help”의 경우 해당 Argument 옵션에 대한 설명이다. “Type”은 옵션의 Input Type을 의미한다. 예를 들어 Int, Float, Str 등을 사용할 수 있다.
  • mkParser.parse_args(): Input Argument 옵션들이 제대로 입력되었는지 확인하고 만약 “Required”  Argument가 제대로 입력되지 않은 경우 에러를 발생시킨다. 만약 모든 Argument가 정상적으로 들어온 경우 Argument의 값들을 리턴한다.
  • RETURN_VARIABLE.OPTIONNAME (예: mkArg.optionA): parse_args()에서 리턴한 Argument 값을 확인할 수 있다.

실험환경

  • Python Version: 3.7
  • OS: Ubuntu Linux 18.04

출처

  1. https://stackoverflow.com/questions/19414060/argparse-required-argument-y-if-x-is-present
  2. https://docs.python.org/2/library/argparse.html
  3. https://m.blog.naver.com/PostView.nhn?blogId=cjh226&logNo=220997049388&proxyReferer=https%3A%2F%2Fwww.google.com%2F
  4. https://brownbears.tistory.com/413
  5. https://stackoverflow.com/questions/15753701/argparse-option-for-passing-a-list-as-option

Leave a Comment