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比较文件夹比另一同名文件夹多出的文件并复制出来的方法
Mar 05 Python
Python中处理时间的几种方法小结
Apr 09 Python
python抽象基类用法实例分析
Jun 04 Python
python使用xlrd与xlwt对excel的读写和格式设定
Jan 21 Python
Python装饰器用法示例小结
Feb 11 Python
python实现桌面壁纸切换功能
Jan 21 Python
解决django中ModelForm多表单组合的问题
Jul 18 Python
Python使用type动态创建类操作示例
Feb 29 Python
Python Django搭建网站流程图解
Jun 13 Python
基于Tensorflow读取MNIST数据集时网络超时的解决方式
Jun 22 Python
Scrapy爬虫文件批量运行的实现
Sep 30 Python
5道关于python基础 while循环练习题
Nov 27 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
推荐一篇入门级的Class文章
2007/03/19 PHP
PHP 图片文件上传实现代码
2010/12/29 PHP
php计算十二星座的函数代码
2012/08/21 PHP
PHP基于phpqrcode类生成二维码的方法示例详解
2020/08/07 PHP
javascript 文章截取部分无损html显示实现代码
2010/05/04 Javascript
模拟电子签章盖章效果的jQuery插件源码
2013/06/24 Javascript
JavaScript中的lastIndexOf()方法使用详解
2015/06/06 Javascript
使用postMesssage()实现跨域iframe页面间的信息传递方法
2016/03/29 Javascript
Bootstrap打造一个左侧折叠菜单的系统模板(一)
2016/05/17 Javascript
js自调用匿名函数的三种写法(推荐)
2016/08/19 Javascript
BootStrap Table 设置height表头与内容无法对齐的问题
2016/12/28 Javascript
javascript验证香港身份证的格式或真实性
2017/02/07 Javascript
解决VUE框架 导致绑定事件的阻止冒泡失效问题
2018/02/24 Javascript
解决vue路由后界面没有变化,但是链接有的问题
2018/09/01 Javascript
微信小程序实现蒙版弹窗效果
2018/11/01 Javascript
说说Vue.js中的functional函数化组件的使用
2019/02/12 Javascript
JavaScript对象原型链原理解析
2020/01/22 Javascript
three.js 如何制作魔方
2020/07/31 Javascript
[40:06]DOTA2亚洲邀请赛 4.3 突围赛 Liquid vs VGJ.T 第一场
2018/04/04 DOTA
Python文件与文件夹常见基本操作总结
2016/09/19 Python
Python调用C# Com dll组件实战教程
2017/10/12 Python
符合语言习惯的 Python 优雅编程技巧【推荐】
2018/09/25 Python
selenium+python自动化测试之使用webdriver操作浏览器的方法
2019/01/23 Python
对Python3 goto 语句的使用方法详解
2019/02/16 Python
Python字符串大小写转换拼接删除空白
2019/09/19 Python
CSS Houdini实现动态波浪纹效果
2019/07/30 HTML / CSS
采用专利算法搜索最廉价的机票:CheapAir
2016/09/10 全球购物
凯特王妃父母建立的派对用品网站:Party Pieces
2017/05/28 全球购物
春季防火方案
2014/05/10 职场文书
节约用水标语
2014/06/11 职场文书
财务管理制度范本
2015/08/04 职场文书
2015年高三毕业班班主任工作总结
2015/10/22 职场文书
幼儿园师德师风心得体会
2016/01/12 职场文书
Python中X[:,0]和X[:,1]的用法
2021/05/10 Python
新手必备Python开发环境搭建教程
2021/05/28 Python
MySQL的存储函数与存储过程的区别解析
2022/04/08 MySQL