optparse 코드를 argparse 로 마이그레이션¶
argparse 모듈은 optparse 모듈이 기본적으로 제공하지 않는 여러 상위 수준 기능을 제공합니다. 다음을 포함합니다:
위치 인자 처리.
하위 명령 지원.
+및/와 같은 대체 옵션 접두어 허용.0개 또는 그 이상, 1개 또는 그 이상 스타일의 인자 처리.
더 정보가 담긴 사용법 메시지 생성.
사용자 지정
type및action에 대해 훨씬 간단한 인터페이스 제공.
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>')호출로 대체하십시오.