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 중국어 웹사이트의 기타 관련 기사를 참조하세요!