为argparse添加一个新的参数解析类型,使其能够正确解析布尔值。
示例代码:
import argparse
def str2bool(v):
if v.lower() in ('yes', 'true', 't', 'y', '1'):
return True
elif v.lower() in ('no', 'false', 'f', 'n', '0'):
return False
else:
raise argparse.ArgumentTypeError('Boolean value expected.')
parser = argparse.ArgumentParser()
parser.add_argument("--mybool", type=str2bool, nargs='?', const=True, default=False, help="set optional bool argument")
args = parser.parse_args()
print(args.mybool)
在上面的代码中,我们定义了一个新的参数解析类型str2bool
,它将字符串转换为布尔值。这个解析类型会将字符串解析为布尔值True
或False
,如果字符串无法解析成布尔值,则会引发argparse.ArgumentTypeError
错误。然后,我们使用这个新的解析类型将--mybool
参数添加到argparse解析器中。这个参数是一个可选的布尔类型参数,它的默认值为False。当命令行中包含--mybool
参数时,它将被解析为True,否则它将保持默认值False。最后,我们通过args.mybool
获取解析器返回的布尔值。
下一篇:Argparse无法识别参数