Python

optparse 코드를 argparse 로 마이그레이션

argparse 모듈은 optparse 모듈이 기본적으로 제공하지 않는 여러 상위 수준 기능을 제공합니다. 다음을 포함합니다:

  • 위치 인자 처리.

  • 하위 명령 지원.

  • +/ 와 같은 대체 옵션 접두어 허용.

  • 0개 또는 그 이상, 1개 또는 그 이상 스타일의 인자 처리.

  • 더 정보가 담긴 사용법 메시지 생성.

  • 사용자 지정 typeaction 에 대해 훨씬 간단한 인터페이스 제공.

Originally, the argparse module attempted to maintain compatibility with optparse. However, the fundamental design differences between supporting declarative command line option processing (while leaving positional argument processing to application code), and supporting both named options and positional arguments in the declarative interface mean that the API has diverged from that of optparse over time.

As described in Choosing an argument parsing library, applications that are currently using optparse and are happy with the way it works can just continue to use optparse.

마이그레이션을 고려하는 개발자들은 마이그레이션이 바람직한지 여부를 결정하기 전에 해당 섹션에서 설명하는 고유 동작 차이점 목록을 검토해야 합니다.

:mod:`optparse`에서 :mod:`argparse`로 마이그레이션을 선택하는 응용 프로그램들의 경우, 다음 제안들이 도움이 될 것입니다:

  • 모든 optparse.OptionParser.add_option() 호출을 ArgumentParser.add_argument() 호출로 대체하십시오.

  • (options, args) = parser.parse_args()args = parser.parse_args() 로 대체하고, 위치 인자를 위해 추가적인 ArgumentParser.add_argument() 호출을 추가하세요. 이전에 options 라고 불렸던 것이 argparse 컨텍스트에서는 이제 args 라고 불린다는 점에 유의하십시오.

  • optparse.OptionParser.disable_interspersed_args`를 :meth:`~ArgumentParser.parse_args() 대신 :meth:`~ArgumentParser.parse_intermixed_args`를 사용하여 대체하십시오.

  • 콜백 액션과 callback_* 키워드 인자를 type 또는 action 인자로 대체하십시오.

  • type 키워드 인자에 대한 문자열 이름들을 해당 타입 객체 (예. int, float, complex 등)로 대체하십시오.

  • optparse.Values`를 :class:`Namespace`로, 그리고 :exc:`optparse.OptionError 및 :exc:`optparse.OptionValueError`를 :exc:`ArgumentError`로 대체하십시오.

  • %default 또는 %prog 와 같은 암시적 인자를 가진 문자열들을 딕셔너리를 사용해 문자열을 포맷팅하는 표준 Python 구문인 %(default)s%(prog)s 로 대체하십시오.

  • OptionParser 생성자의 version 인자를 parser.add_argument('--version', action='version', version='<the version>') 호출로 대체하십시오.