gpt4 book ai didi

python - 使用 argparse 解析 boolean 值

转载 作者:IT老高 更新时间:2023-10-28 12:02:09 26 4
gpt4 key购买 nike

我想使用 argparse 来解析写为“--foo True”或“--foo False”的 boolean 命令行参数。例如:

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("") 评估为 False

如何让 argparse 将 "False""F" 及其小写变体解析为 False

最佳答案

我认为更规范的方法是通过:

command --feature

command --no-feature

argparse很好地支持这个版本:

Python 3.9+ :

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)

当然,如果你真的想要 --arg <True|False>版本,你可以通过 ast.literal_eval作为“类型”,或用户定义的函数...

def t_or_f(arg):
ua = str(arg).upper()
if 'TRUE'.startswith(ua):
return True
elif 'FALSE'.startswith(ua):
return False
else:
pass #error condition maybe?

关于python - 使用 argparse 解析 boolean 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15008758/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com