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 相关文章推荐
python数据结构之列表和元组的详解
Sep 23 Python
python爬取足球直播吧五大联赛积分榜
Jun 13 Python
对Python 3.5拼接列表的新语法详解
Nov 08 Python
详解Python装饰器
Mar 25 Python
python已协程方式处理任务实现过程
Dec 27 Python
Python实现大数据收集至excel的思路详解
Jan 03 Python
如何基于Python实现自动扫雷
Jan 06 Python
Python3 shelve对象持久存储原理详解
Mar 23 Python
Keras保存模型并载入模型继续训练的实现
Feb 20 Python
python神经网络编程之手写数字识别
May 08 Python
利用Python将list列表写入文件并读取的方法汇总
Mar 25 Python
Python 统计序列中元素的出现频度
Apr 26 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
用PHP编程开发“虚拟域名”系统
2006/10/09 PHP
php Try Catch异常测试
2009/03/01 PHP
php将csv文件导入到mysql数据库的方法
2014/12/24 PHP
php使用Jpgraph绘制3D饼状图的方法
2015/06/10 PHP
header与缓冲区之间的深层次分析
2016/07/30 PHP
原生js实现shift/ctrl/alt按键的获取
2013/04/08 Javascript
jquery表单验证插件(jquery.validate.js)的3种使用方式
2015/03/28 Javascript
JavaScript 动态加载脚本和样式的方法
2015/04/13 Javascript
javascript中this的四种用法
2015/05/11 Javascript
使用JavaScript刷新网页的方法
2015/06/04 Javascript
Jquery日期选择datepicker插件用法实例分析
2015/06/08 Javascript
jquery.mousewheel实现整屏翻屏效果
2015/08/30 Javascript
[原创]Bootstrap 中下拉菜单修改成鼠标悬停直接显示
2016/04/14 Javascript
ionic实现带字的toggle滑动组件
2016/08/27 Javascript
JS简单实现表格排序功能示例
2016/12/20 Javascript
js自定义trim函数实现删除两端空格功能
2018/02/09 Javascript
OpenLayers加载缩放控件使用方法详解
2020/09/25 Javascript
Python使用Scrapy爬取妹子图
2015/05/28 Python
详解Python中映射类型(字典)操作符的概念和使用
2015/08/19 Python
Python实现对字符串的加密解密方法示例
2017/04/29 Python
Python爬虫常用小技巧之设置代理IP
2018/09/13 Python
Python pip替换为阿里源的方法步骤
2019/07/02 Python
python里运用私有属性和方法总结
2019/07/08 Python
使用python 将图片复制到系统剪贴中
2019/12/13 Python
Python网络爬虫四大选择器用法原理总结
2020/06/01 Python
基于python SMTP实现自动发送邮件教程解析
2020/06/02 Python
彪马荷兰官网:PUMA荷兰
2019/05/08 全球购物
HolidayLettings英国:预订最好的度假公寓、别墅和自助式住宿
2019/08/27 全球购物
UNIX特点都有哪些
2016/04/05 面试题
宝宝周岁宴答谢词
2014/01/26 职场文书
2014年学习厉行节约反对浪费思想汇报
2014/09/10 职场文书
2015年网络管理员工作总结
2015/05/21 职场文书
新学期开学标语2015
2015/07/16 职场文书
大学军训通讯稿
2015/07/18 职场文书
导游词之苏州阳澄湖
2019/11/15 职场文书
python实现监听键盘
2021/04/26 Python