import argparse
# argparse 모듈은 사용자 친화적인 명령행 인터페이스를 쉽게 작성하도록 합니다.
# 프로그램이 필요한 인자를 정의하면, argparse는 sys.argv를 어떻게 파싱할지 파악합니다.
# 또한 argparse 모듈은 도움말과 사용법 메시지를 자동 생성하고, 사용자가 프로그래멩 잘못된 인자를 줄때 에러를 발생 시킵니다.
parser = argparse.ArgumentParser(description='Precess some integers')
# argsparse를 사용하는 첫 번째 단계는 ArgumentParser객체를 생성하는 것입니다.
parser.add_argument('integers', metavar='N', type=int, nargs='+',
help='an integer for accumulator')
# 인자 추가 하기
# ArgumentParser에 프로그램 인자에 대한 정보를 채우려면 add_argument()메서드를 호출하면 됩니다.
# 일반적으로 이 호출은 ArgumentParser에게 명령행의 문자열을 객체로 변환하는 방법을 알려줍니다.
# 이 정보는 저장되고, parse_args()가 호출될 때 사용됩니다.
# 나중에, parse_args()를 호출하면 두 가지 어트리뷰트, integers와 accumulate를 가진 객체를 반환합니다.
# integers 어트리뷰트는 하나 이상의 int로 구성된 리스트가 될것이고, accumulate어트리뷰트는 명령행에 --sum가 지정되었을 경우
# sum()함수가 되고, 그렇지 않으면 max()함수가 될 것 입니다.
parser.add_argument('--sum', dest='accumulate', action='store_const',
const=sum, default=max,
help='sum the integers (default: find the max)')
# 인자 파싱하기
# ArgumentParser는 parse_args()메서드를 통해 인자를 파싱합니다.
# 이 메서드는 명령행을 검사하고 각 인자를 적절한 형으로 변환 한 다음 적절한 액션을 호출합니다.
# 대부분은, 이것은 간단한 Namespace 객체가 명령행에서 파싱된 어트리뷰트들로 만들어진다는 것을 뜻합니다.
# 스크립트에서 parse_args()는 일반적으로 인자없이 호출되고, ArgumentParser는 sys.argv에서 자동으로 명령행 인자를 결정합니다.
# ArgumentParser 객체
# 새로운 ArgumentParser객체를 만듭니다. 모든 매개변수는 키워드 인자로 전달되어야 합니다.
# 매개 변수마다 아래에서 더 자세히 설명되지만, 요약하면 다음과 같습니다.
# 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옵션을 추가합니다.
# allow_abbrev - 약어가 모호하지 않으면 긴 옵션을 축약할 수 있도록 합니다.(기본값 : True)
args = parser.parse_args()
print(args.accumulate(args.integers))
'필사적 필사' 카테고리의 다른 글
DEBUG와 RELEASE 컴파일의 차이 (0) | 2019.12.11 |
---|---|
여러가지 확장자에 관하여 (0) | 2019.12.11 |
opencv-python에서 특정 프레임 불러오기 (0) | 2019.11.12 |
Entry point (0) | 2019.11.01 |
page to understand ai model as caffe (0) | 2019.10.31 |