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使用asyncio包处理并发详解
Sep 09 Python
python opencv之分水岭算法示例
Feb 24 Python
Python实现扣除个人税后的工资计算器示例
Mar 26 Python
基于循环神经网络(RNN)的古诗生成器
Mar 26 Python
python查看列的唯一值方法
Jul 17 Python
python+opencv实现阈值分割
Dec 26 Python
python使用selenium实现批量文件下载
Mar 11 Python
对PyQt5中树结构的实现方法详解
Jun 17 Python
一行Python代码制作动态二维码的实现
Sep 09 Python
Python Django中间件,中间件函数,全局异常处理操作示例
Nov 08 Python
python绘制规则网络图形实例
Dec 09 Python
在Mac中配置Python虚拟环境过程解析
Jun 22 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 无限级缓存的类的扩展
2009/03/16 PHP
php UBB 解析实现代码
2011/11/27 PHP
限制ckeditor上传图片文件大小的方法
2013/11/15 PHP
PHP错误处理函数register_shutdown_function使用示例
2017/07/03 PHP
PHP命名空间namespace及use的简单用法分析
2018/08/03 PHP
PHP之认识(二)关于Traits的用法详解
2019/04/11 PHP
漂亮的jquery提示效果(仿腾讯弹出层)
2013/02/05 Javascript
JS删除数组元素的函数介绍
2013/03/27 Javascript
javascript 树形导航菜单实例代码
2013/08/13 Javascript
javascript实现数字+字母验证码的简单实例
2014/02/10 Javascript
Bootstrap学习笔记之css样式设计(1)
2016/06/07 Javascript
jquery实现拖动效果
2016/08/10 Javascript
jQuery实现移动端手机商城购物车功能
2016/09/24 Javascript
vue.js实现请求数据的方法示例
2017/02/07 Javascript
nodejs取得当前执行路径的方法
2018/05/13 NodeJs
在Vue中获取组件声明时的name属性方法
2018/09/12 Javascript
微信h5静默和非静默授权获取用户openId的方法和步骤
2020/06/08 Javascript
vue3.0 上手体验
2020/09/21 Javascript
python使用reportlab实现图片转换成pdf的方法
2015/05/22 Python
详解Python 序列化Serialize 和 反序列化Deserialize
2017/08/20 Python
Python文件和流(实例讲解)
2017/09/12 Python
Python实现的插入排序算法原理与用法实例分析
2017/11/22 Python
在vscode中配置python环境过程解析
2019/09/28 Python
Python 解析简单的XML数据
2020/07/24 Python
容易被忽略的Python内置类型
2020/09/03 Python
学校安全教育制度
2014/01/31 职场文书
如何写一份好的英文求职信
2014/03/19 职场文书
《槐乡五月》教学反思
2014/04/25 职场文书
班主任评语大全
2014/04/26 职场文书
医院党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
创业计划书之情侣餐厅
2019/09/29 职场文书
Redis持久化与主从复制的实践
2021/04/27 Redis
详解Python魔法方法之描述符类
2021/05/26 Python
给numpy.array增加维度的超简单方法
2021/06/02 Python
pt-archiver 主键自增
2022/04/26 MySQL