오늘은 맑음

Python argument를 받아보자, argparse 본문

Language/Python

Python argument를 받아보자, argparse

자전거 타는 구구 2021. 10. 11. 01:50
반응형

C언어에서 실행파일에 argument를 전달할 때에는 argc, argv를 이용합니다.

Python 역시 argument를 전달해서 동작을 수행해야 하는데 그 방법 중 하나로 argparse를 알아보겠습니다.

 

argparse는 import argparse를 통해 사용할 수 있습니다.

 

파서 만들기

argparse를 import했다면 parser를 만들어주어야 합니다.

parser를 만드는 방법으로는 argparse의 ArgumentParser를 이용합니다.

ex) parser = argparse.ArgumentParser()

Argument Description Default
prog 프로그램의 이름 sys.argv[0]
usage 프로그램 사용법 파서에 추가된 인자로부터 만들어지는 값
description 인자 도움말 전에 표시할 텍스트 None
epilog 객체들의 리스트  
parant 도움말 출력을 사용자 정의  
prefix_chars 선택 인자 앞에 붙는 문자 집합 기본값 : -
argument_default 추가 인자를 읽어야 하는 파일 앞에 붙는 문자 집합 None
conflict_handler 충돌하는 선택 사항을 해결하는 방법 일반적으로 불필요
add_help 파서에 -h/--help 옵션을 추가 True
allow_abbrev 약어가 모호하지 않으면 긴 옵션을 축약할 수 있도록 함 True

이렇게 만들어진 parser를 사용하려면 인자를 추가해주어야 합니다.

인자 추가는 add_argument를 이용합니다.

 

ex) 

parser = argparse.ArgumentParser()

parser.add_argument(option1, option2, ...)

add_argument의 옵션

Argument Definition Description
name of flags 옵션 문자열의 이름이나 리스트 옵션 인자의 이름, ex) main -num1
action 해당 인자가 명령행에서 발견되었을 때 수행 할 동작 -store : 인자를 저장
-store_true : 인자를 true로 저장
-store_false : 인자를 false로 저장
-store_const : 인자에 지정된 값을 저장
-append : 인자의 리스트에 값을 추가
-append_const : 인자의 리스트에 지정된 값을 추가
-count : 키워드 인자가 몇 번 호출되었는지 카운트
nargs 사용할 인자의 개수 nargs를 통해 하나의 인자에서 여러개의 값을 받을 수 있다
const 일부 action 및 nargs를 선택할 때 필요한 상수값 action의 const 옵션이 들어간 경우와 nargs를 선택시 사용
default 명령행에서 인자를 사용하지 않을 때 생성되는 기본값 명령행에서 인자가 호줄퇴지 않았을 때 입력 될 기본 값
type 명령행 인자의 데이터 타입 명령행 인자의 데이터 타입을 지정, ex) int, str
choices 인자로 허용되는 값의 컨테이너 파싱 시 받을 수 있는 인자의 값을 지정. 인자의 값을 확인하고 받을 수 없는 값이라면 에러메시지를 출력
required 명령행 옵션을 생략할 수 있는지 만약 required가 True인 경우 해당 인자는 반드시 명령행에 포함되어야함
help 각 인자에 대한 설명 -h/--help 옵션을 넣었을 때 각 인자에 대한 설명
metavar 사용 메시지에 사용되는 인자의 이름 기본적으로 help 메시지에서 인자의 이름으로 dest값을 사용하지만 metavar를 사용하면 출력되는 이름을 변경할 수 있음
dest parse_args()가 반환하는 객체에 추가될 attribute의 이름 parse_args()에 의해 반환된 객체의 attribute

위의 옵션들은 add_argument()의 인자로 들어갑니다.

 

이제 argparse를 이용해서 간단한 계산기를 만들어 실습을 해보겠습니다.

 

 실습 프로젝트는 입력된 명령행을 parsing하는 parse, parser의 인자를 받아서 동작을 수행하는 calculator와 main으로 구성되어 있습니다.

 먼저 parse에서는 ArgumentParser를 이용해서 parser객체를 생성합니다.

그리고 parser 객체에 add_argument를 이용해서 명령행을 parsing합니다.

-op1, -op2의 데이터 타입은 int형으로 기본값은 0입니다.

opr의 데이터 타입은 str이며 기본값은 add입니다.

이렇게 parsing이 완료되면 parse_args()함수를 이용해서 parse 객체의 문자열을 객체로 반환해 args에 저장하고 args를 반환합니다.

 

Calculator에서는 args를 입력으로 받아 해당 인자에 따른 동작을 수행하게 됩니다.

 

-h 옵션을 주었을 때 

help옵션을 이용했을 때 출력은 위와 같습니다.

name, choices, dest, help 순으로 출력 되는 것을 볼 수 있습니다.

 

동작 결과

3 + 2 = 5
1 * 2 = 2

choices에 의해 정해진 옵션 외의 입력을 주었을 때

 

 

Reference

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

반응형
Comments