使用 argparse 解析布尔值
在 argparse 中,解析布尔命令行参数是一项常见任务,但尝试时会出现常见的陷阱使用 type=bool 参数解析“--foo True”或“--foo False”等值。令人惊讶的是,即使使用空字符串作为参数(例如“--foo”),解析的值也会计算为 True。
为了正确的布尔解析,argparse 提供了两种推荐的方法:
规范方法:
使用 '--feature' 和'--no-feature' 语法,由 argparse 原生支持:
parser.add_argument('--feature', action=argparse.BooleanOptionalAction)
在下面的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)
使用这种方法,“--feature”的存在将值设置为 True,而“--no-feature”将其设置为 False。缺少任一参数默认为 True。
可选方法(使用类型转换):
如果需要“--arg
parser.add_argument("--arg", type=ast.literal_eval)
或者,可以创建用户定义的函数:
def true_or_false(arg):
ua = str(arg).upper()
if 'TRUE'.startswith(ua):
return True
elif 'FALSE'.startswith(ua):
return False
else:
raise argparse.ArgumentTypeError('Invalid boolean value')
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3