-
[Python] argparse 사용법 (파이썬 인자값 추가하기)언어/파이썬 & 장고 2019. 1. 16. 21:42
파이썬 스크립트를 개발할 때, 호출 당시 인자값을 줘서 동작을 다르게 하고 싶은 경우가 있습니다. 이때, 파이썬 내장함수인 argparse 모듈을 사용하여 원하는 기능을 개발할 수 있습니다.
아래 설명은 파이썬 3.7 버전 기준으로 작성했습니다.
사용법
간단하게 인자값을 받아 처리하는 로직은 아래와 같습니다.
import argparse # 인자값을 받을 수 있는 인스턴스 생성 parser = argparse.ArgumentParser(description='사용법 테스트입니다.') # 입력받을 인자값 등록 parser.add_argument('--target', required=True, help='어느 것을 요구하냐') parser.add_argument('--env', required=False, default='dev', help='실행환경은 뭐냐') # 입력받은 인자값을 args에 저장 (type: namespace) args = parser.parse_args() # 입력받은 인자값 출력 print(args.target) print(args.env)
위와 같이 코드를 작성한 다음, 터미널에서 해당 파일을 인자값 없이 실행시키면 아래와 같이 노출이 됩니다.
$ python3 argparse_test.py usage: argparse_test.py [-h] --target TARGET [--env ENV] argparse_test.py: error: the following arguments are required: --target $ python3 argparse_test.py -h usage: argparse_test.py [-h] --target TARGET [--env ENV] 사용법 테스트입니다. optional arguments: -h, --help show this help message and exit --target TARGET 어느 것을 요구하냐 --env ENV 실행환경은 뭐냐
다음은 인자값을 target, env에 인자값을 주고 실행시킨 결과입니다.
$ python3 argparse_test.py --target=테스트 --env=local 테스트 local $ python3 argparse_test.py --target=테스트 테스트 dev $ python3 argparse_test.py --env=qa usage: argparse_test.py [-h] --target TARGET [--env ENV] argparse_test.py: error: the following arguments are required: --target
인자값 설명
위에서 설명한 기능으로도 원하는 동작을 충분히 커버할 수 있습니다. 아래는 객체와 메서드에 어떤 인자가 있는지 간략하게 설명하겠습니다.
ArgumentParser()
해당 객체에는 아래와 같이 입력받고 있습니다.
- prog: 프로그램의 이름 (기본값:
sys.argv[0]
)- 기본값으로 실행한 스크립트파일명을 노출. 작성 시 스크립트 파일 대신 입력한 값이 노출
- usage: 프로그램 사용법을 설명하는 문자열 (기본값: 파서에 추가된 인자로부터 만들어지는 값)
- 사용방법을 노출. 기본값으로 실행한 파일 + 입력한 인자값들을 노출
- description: 인자 도움말 전에 표시할 텍스트 (기본값: none)
- 스크립트에 -h 옵션을 주어 실행 시, usage 아래에 노출
- 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()
해당 메서드는 아래와 같이 입력받고 있습니다.
- name or flags: 옵션 문자열의 이름이나 리스트, 예를 들어
foo
또는-f, --foo
. - action: 명령행에서 이 인자가 발견될 때 수행 할 액션의 기본형.
- nargs: 소비되어야 하는 명령행 인자의 수.
- const: 일부 action 및 nargs 를 선택할 때 필요한 상숫값.
- default: 인자가 명령행에 없는 경우 생성되는 값.
- type: 명령행 인자가 변환되어야 할 형.
- choices: 인자로 허용되는 값의 컨테이너.
- required: 명령행 옵션을 생략 할 수 있는지 아닌지 (선택적일 때만).
- help: 인자가 하는 일에 대한 간단한 설명.
- metavar: 사용 메시지에 사용되는 인자의 이름.
- dest:
parse_args()
가 반환하는 객체에 추가될 어트리뷰트의 이름.
해당 인자들과 추가적인 기능에 대한 자세한 설명은 https://docs.python.org/ko/3.7/library/argparse.html 에서 확인할 수 있습니다.
- prog: 프로그램의 이름 (기본값: