PythonNote039---argparse处理布尔型参数

Intro

    argparse无法识别布尔型参数,参数传进来时,默认为字符串。字符串强制转布尔型时为True

布尔型

  • 在数值上下文环境中,True 被当作 1,False 被当作 0
  • 其他类型值转换 bool 值时除了 ‘’、“”、‘’‘’‘’、“”“”“”、0、()、[]、{}、None、0.0、0L、0.0+0.0j、False 为 False 外,其他都为 True
print(f'int(True)={int(True)};int(False)={int(False)}')
print(f'True+1={True+1};False+1={False+1}')
int(True)=1;int(False)=0
True+1=2;False+1=1
print(f'bool("")={bool("")}')
bool("")=False

argparse中的布尔型

参数可以设置为布尔型,但是传参时默认为字符串,先验证该逻辑

import argparse
if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument("--isOverwrite", help="Overwrite", type=bool, required=False)
    parser.add_argument("--isOverwrite1", action='store_true',help="Overwrite",required=False)
    parser.add_argument("--isOverwrite2",help="Overwrite", type=lambda x: x.lower() == 'true', required=False)
    args = parser.parse_args()
    print(f'args.isOverwrite={args.isOverwrite}')
    print(f'args.isOverwrite1={args.isOverwrite1}')
    print(f'args.isOverwrite2={args.isOverwrite2}')
!python test.py --isOverwrite False
args.isOverwrite=True

有两种解法:

  • action=‘store_true’,传入参数为True,不传为False
  • 自定义函数type=lambda x: x.lower() == ‘true’,做判断

法1

parser.add_argument("--isOverwrite1", action='store_true',help="Overwrite",required=False)

!python test.py
args.isOverwrite=None
args.isOverwrite1=False
!python test.py --isOverwrite1
args.isOverwrite=None
args.isOverwrite1=True

该方法可以使用,但是不是很方便,比如调试代码时,希望–参数名保留,只改参数值,省去频繁打参数名的步骤

法2

parser.add_argument("--isOverwrite2",help="Overwrite", type=lambda x: x.lower() == 'true', required=False)
!python test.py --isOverwrite2 False
args.isOverwrite=None
args.isOverwrite1=False
args.isOverwrite2=False
!python test.py --isOverwrite2 True
args.isOverwrite=None
args.isOverwrite1=False
args.isOverwrite2=True

                                2022-11-26 阴 于南京市江宁区

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值