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自动安装pip
Apr 24 Python
Windows下python2.7.8安装图文教程
May 26 Python
Python Sqlite3以字典形式返回查询结果的实现方法
Oct 03 Python
python3.5 + PyQt5 +Eric6 实现的一个计算器代码
Mar 11 Python
快速了解Python相对导入
Jan 12 Python
对Python中type打开文件的方式介绍
Apr 28 Python
解决python写入带有中文的字符到文件错误的问题
Jan 31 Python
Windows 安装 Anaconda3+PyCharm的方法步骤
Jun 13 Python
Python读取配置文件(config.ini)以及写入配置文件
Apr 08 Python
Selenium基于PIL实现拼接滚动截图
Apr 10 Python
python_matplotlib改变横坐标和纵坐标上的刻度(ticks)方式
May 16 Python
python urllib和urllib3知识点总结
Feb 08 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使用file_get_contents发送http请求功能简单示例
2018/04/29 PHP
javascript之dhDataGrid Ver2.0.0代码
2007/07/01 Javascript
Cookie 注入是怎样产生的
2009/04/08 Javascript
jquery下onpropertychange事件的绑定方法
2010/08/01 Javascript
javascript学习笔记(九)javascript中的原型(prototype)及原型链的继承方式
2011/04/12 Javascript
JavaScript事件委托用法分析
2015/01/24 Javascript
jQuery实现右侧显示可向左滑动展示的深色QQ客服效果代码
2015/10/23 Javascript
js验证手机号、密码、短信验证码代码工具类
2020/06/24 Javascript
javascript自执行函数
2017/02/10 Javascript
微信小程序 弹窗自定义实例代码
2017/03/08 Javascript
JS去掉字符串前后空格或去掉所有空格的用法
2017/03/25 Javascript
从零开始学习Node.js系列教程之基于connect和express框架的多页面实现数学运算示例
2017/04/13 Javascript
详解Vue.js 2.0 如何使用axios
2017/04/21 Javascript
js is_valid_filename验证文件名的函数
2017/07/19 Javascript
JavaScript代码执行的先后顺序问题
2017/10/29 Javascript
vue基于mint-ui实现城市选择三级联动
2020/06/30 Javascript
vue的style绑定background-image的方式和其他变量数据的区别详解
2018/09/03 Javascript
微信小程序-form表单提交代码实例
2019/04/29 Javascript
vue如何使用async、await实现同步请求
2019/12/09 Javascript
探索浏览器页面关闭window.close()的使用详解
2020/08/21 Javascript
JS PHP字符串截取函数实现原理解析
2020/08/29 Javascript
Python多进程编程技术实例分析
2014/09/16 Python
对于Python编程中一些重用与缩减的建议
2015/04/14 Python
python实现类之间的方法互相调用
2018/04/29 Python
Python中GIL的使用详解
2018/10/03 Python
解决python测试opencv时imread导致的错误问题
2019/01/26 Python
基于Python获取docx/doc文件内容代码解析
2020/02/17 Python
django模型类中,null=True,blank=True用法说明
2020/07/09 Python
英国泽西岛植物:Jersey Plants Direct
2019/08/07 全球购物
毕业生个人求职信范文分享
2014/01/05 职场文书
父亲生日宴会答谢词
2014/01/10 职场文书
新娘父亲婚礼致辞
2014/01/16 职场文书
酒店行政人事部经理职务说明书
2014/02/26 职场文书
司法局2014法制宣传日活动总结
2014/11/01 职场文书
风雨哈佛路观后感
2015/06/03 职场文书
大学生饮品店创业计划书范文
2019/07/10 职场文书