반응형


Argparse 사용법

 

Python 패키지인 argparse는 물론 다양한 분야에서 활용될 수는 있겠지만,

나와 같이 인공지능/머신러닝을 연구하는 사람이라면 매우 자주 접하게 된다.

 

python3 train.py --encoder tf.efficientNetB7 --epochs 40 --batch 32

 

주로 위와 같은 모양새를 가진 코드를 실행시킬일이 매우 잦다.

또한, argparse의 사용법을 알아두면 여러가지 파이썬 코드를 모듈화시키기에 매우 좋다.

 

인자값을 매번 바꿔줄 필요없이, 실행시킬때 변수로 줄 수 있기 때문이다.

 

 

import argparse

 

argparse는 파이썬 내부에 기본적으로 존재하기 때문에, 별도의 설치없이 바로 Import가 가능하다.

사용법은 다음과 같다.

 

Argparse 기본 사용법

 

import argparse

parser = argparse.ArgumentParser("Testing Argparse")
arg = parser.add_argument
arg('--my-number', type=int, help="ArgParse Tutorial")
args = parser.parse_args()

print(args.my_number)

 

  • ArgumentParser에는 적절한 Description을 넣어 parser 객체를 생성할 수 있다. Description값은 아무렇게나 지정해도 실행에는 전혀 지장이 없다.
  • add_argument를 활용하여 인자 종류를 추가할 것이라는것을 선언한다.
  • arg = ('--my-number', type=int, help="This is Help") 를 통해 my-number라는 인자를 추가한다.
  • type은 인자로 들어올 데이터의 자료형을 의미하며 float, bool, int, str등이 가능하다.
  • help값은 내장된 -h 기능을 통해 인자가 뭘 의미하는지를 보여준다.
  • parse_args()를 통해 입력된 인자값을 얻어 온다.
  • args.my_number를 통해 접근할 수 있다.
  • 기본적으로 --my-number와 같은 경우 args.my_number로 변경된다. --은 제거되고, 가운데에 있는 -는 _로 변경된다. 이는 파이썬의 변수 네이밍 규약 때문이다.

 

$python test.py -h
>> 실행결과
usage: Testing Argparse [-h] [--my-number MY_NUMBER]

optional arguments:
  -h, --help            show this help message and exit
  --my-number MY_NUMBER
                        ArgParse Tutorial
                        
                        
 $python test.py --my-number 1
 >> 실행결과
 1

인자 이름 지정

 

arg('--my-number', '-m', type=int, help="ArgParse Tutorial")

 

인자의 이름을 여러개로 설정할수도 있다. 예를들어 help의 경우 --help와 -h로 동시 정의가 되어있다.


Default값  설정

arg('--my-number', '-m', type=int, default=5, help="ArgParse Tutorial")

 

Default값을 지정하면, 입력을 받지 못했을 시 해당 인자의 값에 default값이 입력된다.


인자를 저장할 변수 이름  설정

arg('--my-number', '-m', type=int, help="ArgParse Tutorial", dest='my_num')

 

위와 같이 dest를 지정하면, 해당 인자 값은 my_num 변수로 저장된다.


필수 입력 지정 

arg('--my-number', '-m', type=int, required=True, help="ArgParse Tutorial")

 

required 옵션에 True를 주게 되면, 인자값이 전달되지않을 시 실행이 되지 않는다.

반응형
블로그 이미지

Hyunsoo Luke HA

석사를 마치고 현재는 Upstage에서 전문연구요원으로 활동중인 AI 개발자의 삽질 일지입니다! 이해한 내용을 정리하는 용도로 만들었으니, 틀린 내용이 있으면 자유롭게 의견 남겨주세요!

,