
파이썬의 argparse 사용법에 대해 정리해보고자 합니다! 😊 딥러닝 코드를 구현하다보니 더 다양한 기능들이나, 옵션들에 대해 알고싶어서 정리해보았습니다 😒
깃허브에서 딥러닝 코드들을 보다보면, 아래와 같은 실행 옵션을 많이 확인할 수 있습니다.
python train.py train --epochs 100 --batch-size 10 --plot-every=100
이런 옵션들은 대부분 주어진 소스를 실행하기 위해 필요한 다양한 옵션 (ex. 데이터 경로, 배치 사이즈 등) 을 선택하도록 도와줍니다. 파이썬에서 이런 옵션에 관한 라이브러리가 바로 argparse 입니다! 오늘은 argparse를 어떻게 사용하는지 간단한 예시와 함께 살펴보고자 합니다.
import argparse
우선, argparse를 사용하려면 위의 코드와 같이 import를 해주면 됩니다. 👍
# Create Argparse Instance
parser = argparse.ArgumentParser(description='Argparse Study')
이제, argparse를 사용할 수 있습니다. parser를 위의 코드와 같이 만들어줍니다. description에는 실행하고자 하는 스크립트의 설명을 작성해줄 수 있습니다.
ArgumentParser의 parameter
prog - 프로그램의 이름 (기본값: sys.argv[0])
usage - 프로그램 사용법을 설명하는 문자열 (기본값: 파서에 추가된 인자로부터 만들어지는 값)
description - 인자 도움말 전에 표시할 텍스트 (기본값: none)
epilog - 인자 도움말 후에 표시할 텍스트 (기본값: none)
parents - ArgumentParser 객체들의 리스트이고, 이 들의 인자들도 포함된다
formatter_class - 도움말 출력을 사용자 정의하기 위한 클래스
prefix_chars - 선택 인자 앞에 붙는 문자 집합 (기본값: 〈-〈).
fromfile_prefix_chars - 추가 인자를 읽어야 하는 파일 앞에 붙는 문자 집합 (기본값: None).
argument_default - 인자의 전역 기본값 (기본값: None)
conflict_handler - 충돌하는 선택 사항을 해결하기 위한 전략 (일반적으로 불필요함)
add_help - 파서에 h/--help 옵션을 추가합니다 (기본값: True)
allow_abbrev - 약어가 모호하지 않으면 긴 옵션을 축약할 수 있도록 합니다. (기본값: True)
# Add Argument Value
parser.add_argument('--cpu', action='store_true', help='enables CUDA training')
parser.add_argument('--n_GPUs', type=int, default=0, help='number of GPUs')
parser.add_argument('--epochs', type=int, default=100, help='number of epochs to train')
parser.add_argument('--batch_size', type=int, default=8, help='input batch size for training')
parser.add_argument('--lr', type=float, default=1e-4, help='learning rate')
예를 들어 위의 코드와 같이 argument를 추가할 수 있습니다. add_argument 에는 이름을 '—x' 와 같이 지정해주고, 해당 argument의 type, default 값, action등을 지정해줄 수 있습니다.
add_argument의 parameter
name or flags - 옵션 문자열의 이름이나 리스트, 예를 들어 foo 또는 f, --foo.
👏 foo 는 위치 인자, -foo 는 선택 인자라고 한다.
action - 명령행에서 이 인자가 발견될 때 수행 할 액션의 기본형.
👏 기본 옵션은 store 로, 인자 값을 저장한다. 기본 옵션 외의 제공 되는 액션은 다음과 같다.
추가 Action
store_const : const=x 로 지정된 값을 저장한다.
store_true / store_false : True나 False 값을 저장한다.
append : 리스트를 저장하고, 각 인자 값을 리스트에 추가한다.
append_const : 리스트를 저장하고, const 키워드 인자로 지정된 값을 리스트에 추가한다. (여러 개의 인자가 같은 리스트에 상수를 저장해야 할 때 유용하다.)
count : 키워드 인자가 등장한 횟수를 계산한다.
nargs - 소비되어야 하는 명령행 인자의 수.
👏 다른 수의 명령행 인자를 하나의 액션으로 연결.
const - 일부 action 및 nargs 를 선택할 때 필요한 상숫값.
default - 인자가 명령행에 없는 경우 생성되는 값.
👏 default 키워드 인자의 기본 값은 None 이다. 선택 인자의 경우, 옵션 문자열이 명령행에 없을 때 default 값이 실행된다. type 변환 인자를 적용한다!
type - 명령행 인자가 변환되어야 할 형.
👏 필요한 형 검사와 형 변환이 수행되도록 한다. (ex. float, int, str, bool) 특히, argparse.FileType('w') 는 쓰기 가능한 파일을 만들어준다.
choices - 인자로 허용되는 값의 컨테이너.
required - 명령행 옵션을 생략 할 수 있는지 아닌지 (선택적일 때만).
help - 인자가 하는 일에 대한 간단한 설명.
metavar - 사용 메시지에 사용되는 인자의 이름.
dest - [parse_args()] 가 반환하는 객체에 추가될 어트리뷰트의 이름.
args = parser.parse_args() # Namespace
필요한 argument들을 이용하기 위해선 위의 argument들을 파싱해주어야합니다. parse_args 함수를 이용해 파싱을 할 수 있습니다.
print(args)
입력한 argument들을 확인할때에는 print 함수를 이용해도 됩니다.

혹은, 아래의 사진과 같이 Terminal에서 직접 확인할수도 있습니다.

다양한 argument들이 어떤 의미인지 확인할때에는 -h, -help 명령어를 사용할수도 있습니다.
