Python

[Python] 명령행 인자 전달 - 2

비번변경 2023. 2. 12. 22:12

argparse

사용자 친화적인 명령줄 인터페이스 작성을 도와주는 모듈이다. 프로그램이 어떤 매개변수를 요구하는지 정의하고 sys.argv부터 인자값을 분석한다. 또한 help와 usage 메시지를 자동으로 생성한다.

 

argparse는 기본적으로 다음과 같은 방식으로 사용한다.

 

  1. argparse 모듈 import
  2. ArgumentParser 인스턴스 생성
  3. add_argument 함수로 인수 추가
  4. parser 실행하여 분석
  5. 인자값 사용

이 글에서는 2023.02.11 - [Python] 명령행 인자 전달 - 1에 이어 argparse 모듈을 이용해 명령행 인자 전달하는 방법을 마저 정리한다.

 

 

모듈 import

아래와 같이 모듈을 import 하여 사용한다.

import argparse

 

 

ArgumentParser 인스턴스 생성

생성자를 이용해 ArgumentParser 인스턴스를 생성한다. 필요시 키워드 변수를 이용해 값을 설정할 수 있다.

parser = argparse.ArgumentParser(
                    prog = 'ProgramName',
                    description = 'What the program does',
                    epilog = 'Text at the bottom of help')
                    
# prog : 프로그램 이름
# description : help 옵션 사용 시 처음에 표시할 텍스트
# epilog : help 사용 시 마지막에 표시할 텍스트

 

 

인수 추가

명령행으로 전달할 인자를 추가한다. positional argument는 인자의 이름을 작성하여 추가하고, 옵션 인수는 - 또는 --에 인자 이름을 작성하여 추가한다. 

parser.add_argument('filename')           # positional argument
parser.add_argument('-c', '--count', dest='count')      # 옵션 인수
parser.add_argument('-v', '--verbose',
                    action='store_true')  # on/off flag

dest 매개변수에 설정된 값이 Namespace 내 속성 이름이 되며, default 매개변수로 기본값을 설정할 수 있다.

 

action

인자를 전달받았을 때 처리 방법을 지정한다.

action 처리 방법
store 인자값을 저장한다. 기본값이다.
store_const 인자값을 const 매개변수로 지정된 값으로 저장한다. 
store_true / store_false 인자값을 각각 True/False로 저장한다.
append 여러 개의 인자값을 저장할 수 있도록 한다.
count 인자가 등장한 횟수를 저장한다.

 

 

Parser 실행

parse_args 함수는 인자 문자열을 Namespace의 속성으로 변환하고, Namespace 객체를 반환한다.

args = parser.parse_args()

 

 

인자값 접근 및 사용

인자값은 반환받은 Namespace 객체의 속성에 접근하여 사용할 수 있다.

print(args.filename, args.count, args.verbose)

 

 

예시

예시로 아래와 같은 코드를 작성하여 실행해본다.

import argparse

parser = argparse.ArgumentParser()
parser.add_argument("-d", "--decimal", dest="decimal", action="store")
parser.add_argument("-f", "--fast", dest="fast", action="store_true")
args = parser.parse_args()

if args.decimal == '1':
    print("decimal is 1")

if args.fast:
    print("-f option is used")

-h, --help 옵션을 주어 실행하면 python 코드를 실행하기 위한 도움말을 얻을 수 있다.

명령행 인자를 전달하면 아래와 같이 실행된다.

 

 

 

참고 문서

https://docs.python.org/ko/3/library/argparse.html

Python argparse 사용법

https://wikidocs.net/73785