如何在argparse中正确解析布尔值?

Linda Hamilton
发布: 2024-10-26 18:56:29
原创
620 人浏览过

How Can I Parse Boolean Values Correctly in argparse?

使用 argparse 解析布尔值

在 argparse 中,解析布尔命令行参数是一项常见任务,但尝试时会出现常见的陷阱使用 type=bool 参数解析“--foo True”或“--foo False”等值。令人惊讶的是,即使使用空字符串作为参数(例如“--foo “”),解析的值也会计算为 True。

为了正确的布尔解析,argparse 提供了两种推荐的方法:

规范方法:

使用 argparse 原生支持的 '--feature' 和 '--no-feature' 语法:

<code class="python">parser.add_argument('--feature', action=argparse.BooleanOptionalAction)</code>
登录后复制

在 3.9 以下的 Python 版本中:

<code class="python">parser.add_argument('--feature', action='store_true')
parser.add_argument('--no-feature', dest='feature', action='store_false')
parser.set_defaults(feature=True)</code>
登录后复制

使用这种方法,“--feature”的存在会将值设置为 True,而“--no-feature”将其设置为 False。缺少任一参数默认为 True。

可选方法(使用类型转换):

如果“--arg ”语法为根据需要,可以使用自定义类型转换函数:ast.literal_eval:

<code class="python">parser.add_argument("--arg", type=ast.literal_eval)</code>
登录后复制

或者,可以创建用户定义的函数:

<code class="python">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')</code>
登录后复制

以上是如何在argparse中正确解析布尔值?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!