Option Parser

1. Python-Fire

a library for automatically generating command line interfaces

pip install fire

import fire

def add(x, y):
  return x + y

def multiply(x, y):
  return x * y

if __name__ == '__main__':
  fire.Fire()

사용

$ python example.py add 10 20  #함수명을 첫 인자로 활용??
30
$ python example.py multiply 10 20
200

2. Argparse

명령행 인터페이스(커맨드 라인 인터페이스)에서 명령행 인자를 받아서 실행시 사용

파이썬 3에서 새롭게 추가된 모듈
파이썬 2에서 사용할 때에는 pip으로 설치​(pip install argparse)

2.1 스트링 인자

import argparse
parser = argparse.ArgumentParser() # argparse의 기능을 사용하기 위해 argparse를 변수에 할당


# argparse Option 설정 
parser.add_argument("echo", help="echo the string you use here") #add_argument를 통해 옵션 리스트를 추가
parser.add_argument('X', type=int,  # `X`는 ID로 뒤에서 처리할 것 지정 
            help="What is the first number?")
parser.add_argument('Y', type=int,
            help="What is the second number?")


# argparse Option 동작 구간 설정
args = parser.parse_args()  #파서로 받아 온것은 `args` 라는 인스턴스에 저장 
X = args.X
Y = args.Y
print("%d + %d = %d" % (X, Y, X+Y))
print(args.echo)

.add_argument(name or flags...[,action][,nargs][,default][,type][,choices][,required][,help][,metavar][,dest])

  • 우선 한 번에 한 종류의 스위치를 등록할 수 있다.
  • name or flags : 등록할 파라미터의 이름이나 스위치를 등록한다. (eg. “-f”, “–foo”)
    • -있으면 : Optional Argument
    • -없으면 : 그냥 Argument
  • action: 스위치가 주어졌을 때, 표준 동작을 정한다.
    • 기본값은 “store”이고 이는 주어진 스위치의 옵션 값을 플래그(혹은 이름)의 키에 저장한다. 단지
  • nargs : 스위치나 파라미터가 받을 수 있는 값의 개수를 가리킨다.
    • 1 , 2 , 3 ... : 정해진 수의 argument 를 가져다 list 로 만든다.
    • '?' : 1개의 argument 를 소모한다.
    • '*' : option 뒤에 붙은 모든 녀석들을 list 로 만들어준다.
    • '+' : '*' 와 같다. 다만 argument 가 1개도 없다면 error 를 보여준다.
    • argparse.REMAINDER : 남은 argument 를 묶어서 list 로 준다.
  • default: 뒤에 별도 값이 없는 경우 디폴트로 들어갈 값
  • type: 파싱하여 저장할 때 타입을 변경할 수 있다.
  • choices: 리스트 형태로 전달하면, 리스트의 원소와 일치하는 것만 취한다.
  • required: 필수 파라미터인 경우 True로 설정. 없으면 알아서 에러메시지를 표시하고 자동으로 exit한다.
  • help: –help 옵션을 받았을 때, 표시될 메시지 목록에서 스위치의 도움말을 설정한다.
  • metavar: usage 메시지를 출력할 때 표시할 메타변수이름을 지정해준다.
  • dest : 스위치나 파라미터이름이 아닌 별도의 변수를 지정할 때 쓴다. 외부에서 변수를 미리 선언한 경우, 해당 변수에 값이 들어간다.

.parse_args()

  • 각 인자의 리스트를 받아 이를 파싱한 결과를 되돌려 준다. 파싱된 결과는 하나의 네임스페이스를 갖는 객체로 모든 스위치 이름들은 이 객체의 속성 이름으로 정의되어 있다.

2.2 선택 인자

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--verbosity", help="increase output verbosity", dest=verbosity)


args = parser.parse_args()
if args.verbosity:
    print("verbosity turned on")

results matching ""

    No results matching ""