argparse를 사용하여 부울 명령줄 인수를 구문 분석하는 방법: \'--foo False\'가 항상 False를 의미하지 않는 이유는 무엇입니까?

Linda Hamilton
풀어 주다: 2024-10-31 12:26:03
원래의
507명이 탐색했습니다.

How to Parse Boolean Command-Line Arguments with argparse: Why

argparse를 사용하여 부울 명령줄 인수 구문 분석

argparse를 사용하여 부울 인수를 구문 분석할 때 사용자가 값을 " --foo True" 또는 "--foo False." "--foo False"가 False로 평가되어야 한다는 직관적인 가정에도 불구하고 argparse는 이를 True로 해석합니다. 이 동작은 부울 인수에 빈 문자열을 입력할 때도 발생합니다.

이 문제를 해결하기 위해 argparse는 부울 플래그에 대한 대체 구문 분석 옵션을 제공합니다.

1. Action=argparse.BooleanOptionalAction (Python 3.9 )

action=argparse.BooleanOptionalAction을 지정하면 argparse는 자동으로 인수 없이 플래그가 있으면 True로, 플래그가 없으면 False로 해석합니다. 예:

<code class="python">parser.add_argument('--feature', action=argparse.BooleanOptionalAction)</code>
로그인 후 복사

2. Store_True 및 Store_False

3.9 이전 Python 버전의 경우 다음 접근 방식을 사용할 수 있습니다.

<code class="python">parser.add_argument('--feature', action='store_true')
parser.add_argument('--no-feature', dest='feature', action='store_false')
parser.set_defaults(feature=True)</code>
로그인 후 복사

이를 통해 사용자는 "--feature를 전달하여 기능을 활성화하거나 비활성화할 수 있습니다. " 또는 "--no-feature"입니다.

3. 사용자 정의 유형 함수

원하는 경우 사용자 정의 유형 함수를 사용하여 부울 구문 분석을 처리할 수 있습니다. 예는 다음과 같습니다.

<code class="python">def t_or_f(arg):
    ua = str(arg).upper()
    if 'TRUE'.startswith(ua):
        return True
    elif 'FALSE'.startswith(ua):
        return False
    else:
        raise ValueError("Invalid input")</code>
로그인 후 복사

이 함수는 부울 인수를 파서에 추가할 때 유형 인수로 사용할 수 있습니다.

이러한 방법을 활용하여 사용자는 부울 명령을 효과적으로 구문 분석할 수 있습니다. 줄 인수를 입력하고 "False"와 같은 값이 올바르게 해석되는지 확인하세요.

위 내용은 argparse를 사용하여 부울 명령줄 인수를 구문 분석하는 방법: \'--foo False\'가 항상 False를 의미하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿