python argparse传入布尔参数false不生效的解决


Posted in Python onApril 20, 2020

跑代码时,在命令行给python程序传入bool参数,但无法传入False,无论传入True还是False,程序里面都是True。下面是代码:

parser.add_argument("--preprocess", type=bool, default=True, help='run prepare_data or not')

高端解决方案

使用可选参数store_true,将上述代码改为:

parse.add_argument("--preprocess", action='store_true', help='run prepare_data or not')

在命令行执行py文件时,不加--preprocess,默认传入的preprocess参数为False;

如果加--preprocess,则传入的是True。

还可以将上述代码改为:

parse.add_argument("--preprocess", default='False', action='store_true', help='run prepare_data or not')

和 1 中表达的意思完全相同。

在命令行执行py文件时,不加--preprocess,默认传入的preprocess参数为False;

如果加--preprocess,则传入的是True。

还可以将上述代码改为:

parse.add_argument("--preprocess", default='True', action='store_true', help='run prepare_data or not')

和 1 中表达的意思完全相反。

在命令行执行py文件时,不加--preprocess,默认传入的preprocess参数为True;

如果加--preprocess,则传入的是False。

产生的原因和较Low的解决方案

猜测可能的原因是数据类型导致的,传入的都是string类型,转为bool型时,由于是非空字符串,所以转为True。

从这个角度去更改的话,由于type参数接收的是callable的参数类型来对我们接收的原始参数做处理,我们可以定义一个函数赋值给type参数,用它对原始参数做处理:

parser.add_argument("--preprocess", type=str2bool, default='True', help='run prepare_data or not')

下面定义这个函数将str类型转换为bool型:

def str2bool(str):
return True if str.lower() == 'true' else False

补充知识:parser.add_argument验证格式

我就废话不多说了,还是直接看代码吧!

article_bp = Blueprint('article', __name__, url_prefix='/api')

api = Api(article_bp)
parser = reqparse.RequestParser()
parser.add_argument('name', type=str, help='必须填写名称', required=True)
channel_fields = {
 'id': fields.Integer,
 'cname': fields.String
}

class ChannelResource(Resource):
 def get(self):
 channels = Channel.query.all()
 return marshal(channels, channel_fields)

 def post(self):
 args = parser.parse_args()
 if args:
  channel = Channel()
  channel.cname = args.get('name')
  channel.save()
  return {'msg': '频道添加成功', 'channel': marshal(channel, channel_fields)}
 else:
  return {'msg': '频道添加失败'}

以上这篇python argparse传入布尔参数false不生效的解决就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
pandas数据框,统计某列数据对应的个数方法
Apr 11 Python
pycharm 将django中多个app放到同个文件夹apps的处理方法
May 30 Python
Python应用领域和就业形势分析总结
May 14 Python
Pyqt QImage 与 np array 转换方法
Jun 27 Python
docker-py 用Python调用Docker接口的方法
Aug 30 Python
解决Tensorboard 不显示计算图graph的问题
Feb 15 Python
python实现四人制扑克牌游戏
Apr 22 Python
Django 解决阿里云部署同步数据库报错的问题
May 14 Python
Keras模型转成tensorflow的.pb操作
Jul 06 Python
Python如何读取、写入JSON数据
Jul 28 Python
python实现简单的井字棋游戏(gui界面)
Jan 22 Python
Jupyter notebook 不自动弹出网页的解决方案
May 21 Python
parser.add_argument中的action使用
Apr 20 #Python
Python ArgumentParse的subparser用法说明
Apr 20 #Python
python列表的逆序遍历实现
Apr 20 #Python
python sitk.show()与imageJ结合使用常见的问题
Apr 20 #Python
使用Python对Dicom文件进行读取与写入的实现
Apr 20 #Python
python 错误处理 assert详解
Apr 20 #Python
解决Jupyter Notebook使用parser.parse_args出现错误问题
Apr 20 #Python
You might like
苏联队长,苏联超人蝙蝠侠,这些登场的“山寨”英雄真的很严肃
2020/04/09 欧美动漫
php.ini中文版
2006/10/09 PHP
如何对PHP程序中的常见漏洞进行攻击
2006/10/09 PHP
Smarty保留变量用法分析
2016/05/23 PHP
php解析base64数据生成图片的方法
2016/12/06 PHP
php 微信开发获取用户信息如何实现
2016/12/13 PHP
BOOM vs RR BO5 第三场 2.14
2021/03/10 DOTA
date.parse在IE和FF中的区别
2010/07/29 Javascript
Js-$.extend扩展方法使方法参数更灵活
2013/01/15 Javascript
JS Replace()的高级使用方法介绍
2013/06/29 Javascript
JS对象转换为Jquery对象示例
2014/01/26 Javascript
jquery解析JSON数据示例代码
2014/03/17 Javascript
jQuery中next方法用法实例
2015/04/24 Javascript
jQuery实现查找最近父节点的方法
2016/06/23 Javascript
高效Web开发的10个jQuery代码片段
2016/07/22 Javascript
JavaScript使用链式方法封装jQuery中CSS()方法示例
2017/04/07 jQuery
javascript如何用递归写一个简单的树形结构示例
2017/09/06 Javascript
Sublime Text新建.vue模板并高亮(图文教程)
2017/10/26 Javascript
利用node.js如何创建子进程详解
2017/12/09 Javascript
vue 音乐App QQ音乐搜索列表最新接口跨域设置方法
2018/09/25 Javascript
小程序组件传值和引入sass的方法(使用vant Weapp组件库)
2020/11/24 Javascript
Python中输出ASCII大文字、艺术字、字符字小技巧
2015/04/28 Python
Python ldap实现登录实例代码
2016/09/30 Python
python一键升级所有pip package的方法
2017/01/16 Python
python根据多个文件名批量查找文件
2019/08/13 Python
使用Pyhton集合set()实现成果查漏的例子
2019/11/24 Python
Win系统PyQt5安装和使用教程
2019/12/25 Python
通过Python扫描代码关键字并进行预警的实现方法
2020/05/24 Python
Python Django中间件使用原理及流程分析
2020/06/13 Python
英国复古和经典球衣网站:Vintage Football Shirts
2018/10/05 全球购物
编写用C语言实现的求n阶阶乘问题的递归算法
2014/10/21 面试题
小学生作文评语
2014/04/18 职场文书
汽车服务工程专业自荐信
2014/09/02 职场文书
群众路线四风问题整改措施
2014/09/27 职场文书
交通局领导班子群众路线教育实践活动对照检查材料思想汇报
2014/10/09 职场文书
Redis如何实现验证码发送 以及限制每日发送次数
2022/04/18 Redis