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 Tkinter简单布局实例教程
Sep 03 Python
Python 迭代器工具包【推荐】
May 06 Python
浅谈python中的实例方法、类方法和静态方法
Feb 17 Python
Python cookbook(字符串与文本)针对任意多的分隔符拆分字符串操作示例
Apr 19 Python
python用BeautifulSoup库简单爬虫实例分析
Jul 30 Python
Python 进程之间共享数据(全局变量)的方法
Jul 16 Python
python twilio模块实现发送手机短信功能
Aug 02 Python
python元组的概念知识点
Nov 19 Python
python自动点赞功能的实现思路
Feb 26 Python
python 两个一样的字符串用==结果为false问题的解决
Mar 12 Python
在python中实现导入一个需要传参的模块
May 12 Python
Pandas实现DataFrame的简单运算、统计与排序
Mar 31 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模板之Phpbean的目录结构
2008/01/10 PHP
使用php 获取时间今天明天昨天时间戳的详解
2013/06/20 PHP
php多层数组与对象的转换实例代码
2013/08/05 PHP
Yii2中hasOne、hasMany及多对多关联查询的用法详解
2017/02/15 PHP
PHP简单实现二维数组的矩阵转置操作示例
2017/11/24 PHP
基于php中echo用逗号和用点号的区别详解
2018/01/23 PHP
js中document.write使用过程中的一点疑问解答
2014/03/20 Javascript
Jquery跳到页面指定位置的方法
2014/05/12 Javascript
基于jQuery实现网页进度显示插件
2015/03/04 Javascript
jQuery使用正则表达式替换dom元素标签用法示例
2017/01/16 Javascript
JavaScript纯色二维码变成彩色二维码
2020/07/23 Javascript
swiper 自动图片无限轮播实现代码
2018/05/21 Javascript
JS如何在数组指定位置插入元素
2020/03/10 Javascript
js实现飞机大战游戏
2020/08/26 Javascript
python实现将英文单词表示的数字转换成阿拉伯数字的方法
2015/07/02 Python
Python使用面向对象方式创建线程实现12306售票系统
2015/12/24 Python
书单|人生苦短,你还不用python!
2017/12/29 Python
python之PyQt按钮右键菜单功能的实现代码
2019/08/17 Python
Python操作Mongodb数据库的方法小结
2019/09/10 Python
解析python实现Lasso回归
2019/09/11 Python
使用Python的networkx绘制精美网络图教程
2019/11/21 Python
2020新版本pycharm+anaconda+opencv+pyqt环境配置学习笔记,亲测可用
2020/03/24 Python
python列表的逆序遍历实现
2020/04/20 Python
python利用Excel读取和存储测试数据完成接口自动化教程
2020/04/30 Python
keras topN显示,自编写代码案例
2020/07/03 Python
python 实现全球IP归属地查询工具
2020/12/18 Python
锐步英国官网:Reebok英国
2019/11/29 全球购物
Araks官网:纽约内衣品牌
2020/10/15 全球购物
应届生法律求职信
2013/10/22 职场文书
班级文化建设标语
2014/06/23 职场文书
小学生国庆演讲稿
2014/09/05 职场文书
毕业生个人总结
2015/02/28 职场文书
综合素质评价个性与发展自我评价
2015/03/06 职场文书
Nginx服务器添加Systemd自定义服务过程解析
2021/03/31 Servers
springboot读取nacos配置文件
2022/05/20 Java/Android
JS实现刷新网页后之前浏览位置保持不变示例详解
2022/08/14 Javascript