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 socket网络编程步骤详解(socket套接字使用)
Dec 06 Python
使用Python开发windows GUI程序入门实例
Oct 23 Python
python列出目录下指定文件与子目录的方法
Jul 03 Python
栈和队列数据结构的基本概念及其相关的Python实现
Aug 24 Python
python使用socket创建tcp服务器和客户端
Apr 12 Python
python实现切割url得到域名、协议、主机名等各个字段的例子
Jul 25 Python
Python中变量的输入输出实例代码详解
Jul 28 Python
详解Python并发编程之创建多线程的几种方法
Aug 23 Python
keras tensorflow 实现在python下多进程运行
Feb 06 Python
python pymysql库的常用操作
Oct 16 Python
Python+uiautomator2实现自动刷抖音视频功能
Apr 29 Python
pytorch实现加载保存查看checkpoint文件
Jul 15 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 session和cookie使用说明
2010/04/07 PHP
PHP实现求解最长公共子串问题的方法
2017/11/17 PHP
php使用curl伪造来源ip和refer的方法示例
2018/05/08 PHP
JavaScript中for..in循环陷阱介绍
2013/11/12 Javascript
JS将滑动门改为选项卡(需鼠标点击)的实现方法
2015/09/27 Javascript
学习JavaScript鼠标响应事件
2015/12/25 Javascript
js输出数据精确到小数点后n位代码
2016/07/02 Javascript
使用JavaScript判断手机浏览器是横屏还是竖屏问题
2016/08/02 Javascript
原生js图片轮播效果实现代码
2016/10/19 Javascript
Express与NodeJs创建服务器的两种方法
2017/02/06 NodeJs
JS正则获取HTML元素的方法
2017/03/31 Javascript
Easyui ueditor 整合解决不能编辑的问题(推荐)
2017/06/25 Javascript
使用Node.js搭建静态资源服务详细教程
2017/08/02 Javascript
nodejs更改项目端口号的方法
2018/05/13 NodeJs
javaScript把其它类型转换为Number类型
2019/10/13 Javascript
JavaScript计算正方形面积
2019/11/26 Javascript
vue 动态给每个页面添加title、关键词和描述的方法
2020/08/28 Javascript
微信小程序实现自定义动画弹框/提示框的方法实例
2020/11/06 Javascript
数据挖掘之Apriori算法详解和Python实现代码分享
2014/11/07 Python
python实现爬虫统计学校BBS男女比例之多线程爬虫(二)
2015/12/31 Python
Python入门之三角函数sin()函数实例详解
2017/11/08 Python
python语言线程标准库threading.local解读总结
2019/11/10 Python
python socket通信编程实现文件上传代码实例
2019/12/14 Python
python快速安装OpenCV的步骤记录
2021/02/22 Python
如何使用css3实现一个类在线直播的队列动画的示例代码
2020/06/17 HTML / CSS
viagogo意大利票务平台:演唱会、体育比赛、戏剧门票
2018/01/26 全球购物
全民健身日活动方案
2014/01/29 职场文书
金融事务专业毕业生求职信
2014/02/23 职场文书
幼儿园父亲节活动方案
2014/03/11 职场文书
充分就业社区汇报材料
2014/05/07 职场文书
森林防火标语
2014/06/23 职场文书
乡镇党员干部群众路线对照检查材料思想汇报
2014/09/28 职场文书
个人委托书范本汇总
2014/10/01 职场文书
机关班子查摆问题及整改措施
2014/10/28 职场文书
python基于tkinter制作无损音乐下载工具
2021/03/29 Python
在python中读取和写入CSV文件详情
2022/06/28 Python