python argparse bool 解析

Pythonargparse处理布尔命令行参数的技巧,
文章讲述了如何在Python的argparse中正确处理布尔类型的命令行参数,包括使用action参数(如store_true和store_false)以及自定义str2bool函数来确保值的正确解析。
部署运行你感兴趣的模型镜像
  • python 的 argparse,对于输入全部都是按照字符串读取,即便设置了 type=bool,依然是按照字符串获取。因此不论该参数设什么值(True/False),只要设置了,都会被获取成非空字符串,后续转 bool 就都是 true 了

  • 可以额外使用 action 参数,或者是添加一个 str2bool 的方法,来处理 boolean 的命令行参数

    • action 参数,action关键字默认状态有两种,store_true和store_false

      • 输入命令时,不指定其参数,则store_true显示为False,store_false显示为True
          parse.add_argument("--a", action="store_true")
      

      action类型参数 a 的值为 store_true,若命令行输入时不指定 a, 那么结果默认为 False,在命令行输入了 --a 参数,那么结果为 True

    • 添加一个 str2bool 的方法,来处理 boolean 的命令行参数

          parse.add_argument("--a", default=False, type=str2bool)
      

      str2bool

          def str2bool(value):
            if isinstance(value, bool):
                return value
            if value.lower() in ("yes", "true", "t", "y", "1"):
                return True
            elif value.lower() in ("no", "false", "f", "n", "0"):
                return False
            else:
                raise argparse.ArgumentTypeError("Boolean value expected")
      

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

### 使用 `argparse` 处理布尔值参数 为了使用 `argparse` 解析布尔类型的命令行参数,可以利用 `store_true` 或 `store_false` 动作来实现简单的开关选项。对于更复杂的场景,比如接受 `"True"` 和 `"False"` 字符串作为输入,则可以通过自定义类型转换函数。 #### 方法一:简单开关模式 当只需要一个标志位而不需要显式的真伪字符串时: ```python import argparse parser = argparse.ArgumentParser(description='Process some boolean flags.') parser.add_argument('--my_boolean_flag', action='store_true', help='Set this flag to true') args = parser.parse_args() if args.my_boolean_flag: print('Flag is set!') else: print('Flag not set.') ``` 这种方法下,默认情况下该标志为假;如果指定了 `--my_boolean_flag` 参数则变为真[^1]。 #### 方法二:支持 "True"/"False" 输入 若希望程序能够识别并正确解释形如 `--foo True` 的形式,可采用如下方式设置解析器: ```python def str2bool(v): if isinstance(v, bool): return 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('--my_boolean_flag', type=str2bool, nargs='?', const=True, default=False, help='A boolean flag that accepts True/False values') args = parser.parse_args() print(f'My Boolean Flag Value: {args.my_boolean_flag}') ``` 这段代码通过定义辅助函数 `str2bool()` 来完成从字符串到布尔型数据的转换工作,并允许用户以多种常见的方式指定真假值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值