반응형
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를 주게 되면, 인자값이 전달되지않을 시 실행이 되지 않는다.
반응형