본문 바로가기
Python/Python FAQ

Python Argparse: '--help'에 기본값을 포함하는 방법은 무엇인가요?, Argparse: Way to include default values in '--help'?

by 베타코드 2023. 11. 28.
반응형

질문


다음과 같은 argparse 스니펫이 있다고 가정해 봅시다:

diags.cmdln_parser.add_argument( '--scan-time',
                     action  = 'store',
                     nargs   = '?',
                     type    = int,
                     default = 5,
                     help    = "Wait SCAN-TIME seconds between status checks.")

현재, --help는 다음과 같이 반환됩니다:

usage: connection_check.py [-h]
                             [--version] [--scan-time [SCAN_TIME]]

          Test the reliability/uptime of a connection.



optional arguments:
-h, --help            도움말을 표시하고 종료
--version             프로그램의 버전 번호를 표시하고 종료
--scan-time [SCAN_TIME]
                    상태 확인 사이에 SCAN-TIME 초를 대기합니다.

다음과 같이 원합니다:

--scan-time [SCAN_TIME]
                    상태 확인 사이에 SCAN-TIME 초를 대기합니다.
                    (기본값 = 5)

도움말 포매터 코드를 엿보면 제한된 옵션이 있음을 알 수 있습니다. argparse를 사용하여 --scan-time의 기본값을 비슷한 방식으로 출력하는 똑똑한 방법이 있는지, 아니면 help 포매터를 서브클래스화해야 하는지 알고 싶습니다.


답변


아래의 HTML을 한국어로 번역하되, HTML 태그와 태그 안의 텍스트는 영어로 보존하십시오.

parser = argparse.ArgumentParser(
    # ... other options ...
    formatter_class=argparse.ArgumentDefaultsHelpFormatter)

문서를 인용하면 다음과 같습니다.

다른 사용 가능한 포매터 클래스인 ArgumentDefaultsHelpFormatter는 각 인수의 기본값에 대한 정보를 추가합니다.

이는 도움말 텍스트가 정의된 인수에만 적용됨을 유의하십시오; 인수에 대한 help 값이 없으면 기본값에 대한 정보를 추가할 도움말 메시지가 없습니다.

그럼으로써 스캔 시간 옵션의 정확한 출력은 다음과 같습니다:

  --scan-time [SCAN_TIME]
                        상태 확인 사이에 SCAN-TIME 초 동안 대기합니다.
                        (기본값: 5)
반응형

댓글