"--foo True"또는 "--foo False"로 작성된 부울 명령 행 인수를 구문 분석하기 위해 argparse를 사용하고 싶습니다. 예를 들면 다음과 같습니다.
my_program --my_boolean_flag False
그러나 다음 테스트 코드는 내가 원하는 것을 수행하지 않습니다.
import argparse
parser = argparse.ArgumentParser(description="My parser")
parser.add_argument("--my_bool", type=bool)
cmd_line = ["--my_bool", "False"]
parsed_args = parser.parse(cmd_line)
슬프게도로 parsed_args.my_bool
평가됩니다 True
. 이것은 내가 변경할 경우에도 경우입니다 cmd_line
수 ["--my_bool", ""]
있기 때문에, 의외 인 bool("")
에 evalutatesFalse
.
어떻게 구문 분석 argparse 얻을 수 있습니다 "False"
, "F"
그리고 그들의 낮은 경우로 변형 False
?
parser.add_argument('--feature', dest='feature', type=lambda x:bool(distutils.util.strtobool(x)))
. 이 옵션을 사용하면이 솔루션은 bool
값이 True
또는 인 유형을 보장합니다 False
. 옵션을 사용하지 않으면 얻을 수 None
있습니다. ( distutils.util.strtobool(x)
다른 stackoverflow 질문에서 온
parser.add_argument('--my_bool', action='store_true', default=False)
parser.add_argument('--feature', dest='feature', default=False, action='store_true')
. 이 솔루션은 항상 또는bool
값 이있는 유형을 얻도록 보장합니다 . (이 솔루션에는 제약 조건이 있습니다. 옵션에는 기본값이 있어야합니다.)True
False