질문:
argparse를 사용하여 부울 명령줄 인수를 구문 분석할 때 왜 값을 수행합니까? "--foo False"와 같이 False 대신 True로 평가됩니까?
답변:
표준 방법:
The 권장되는 접근 방식은 다음 형식을 사용하는 것입니다.
command --feature
기능을 부정하려면 다음을 사용하세요.
command --no-feature
argparse는 이에 대한 기본 지원을 제공합니다.
Python < 3.9:
parser.add_argument('--feature', action='store_true') parser.add_argument('--no-feature', dest='feature', action='store_false') parser.set_defaults(feature=True)
사용자 정의 구문 분석을 위한 대체 방법:
"--foo True/False" 형식이 선호되는 경우, 옵션은 ast.literal_eval 또는 사용자 정의 함수를 유형으로 사용하는 것입니다.
import ast def t_or_f(arg): ua = str(arg).upper() if 'TRUE'.startswith(ua): return True elif 'FALSE'.startswith(ua): return False else: pass # Handle error condition appropriately
<code class="python">parser.add_argument("--my_bool", type=ast.literal_eval) parser.add_argument("--my_bool", type=t_or_f)</code>
이 사용자 정의 함수는 대문자 True/False를 부울 값으로 해석하여 이러한 값을 유연하게 구문 분석할 수 있습니다.
위 내용은 argparse를 사용하여 부울 인수를 구문 분석할 때 \'--foo False\'가 True로 평가되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!