前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python argparse 无法传递bool

python argparse 无法传递bool

作者头像
羽翰尘
修改2019-11-26 17:08:50
1.6K0
修改2019-11-26 17:08:50
举报
文章被收录于专栏:技术向技术向

本文由腾讯云+社区自动同步,原文地址 https://cloud.tencent.com/developer/article/1540855

问题详述

在使用argparse时发现无法传递bool型变量,无论命令行输入True还是False,解析出来之后都是True,代码如下

代码语言:txt
复制
    parser = argparse.ArgumentParser()
    parser.add_argument(
        ‘–isTrain’,
        help=’Do you want to train the network?’,
        type=bool,
    )
args = parser.parse_args()
my_bool = args.bool_arg

问题解决

在搜索了一下后,发现有一种注册回调函数的方法比较好用,代码如下

回调函数

代码语言:txt
复制
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('Unsupported value encountered.')

正常执行代码

代码语言:txt
复制
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument(
    '--isTrain',
    type= str2bool,
    nargs = '?', 
    const = True, 
    help='If this is a train process?')
args, unparsed = parser.parse_known_args()
if args.isTrain == False:
    isTrain = args.isTrain 
tf.app.run(main=main)
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-03-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题详述
  • 问题解决
    • 回调函数
      • 正常执行代码
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档