Python 使用 docopt 解析json参数文件过程讲解


Posted in Python onAugust 13, 2019

1. 背景

在深度学习的任务中,通常需要比较复杂的参数以及输入输出配置,比如需要不同的训练data,不同的模型,写入不同的log文件,输出到不同的文件夹以免混淆输出

常用的parser.add()方法非常占用代码空间,而且输入输出配置无法通过文件更改,只能通过命令行参数改变。

docopt 库提供了一个非常优雅的命令行解析工具,这边只介绍其中解析文件参数

2. 安装

pip install docopt
import docopt
import json

3. 使用

docopt 由两部分组成,第一部分是解析部分,通过“”“ -”“”(一段类似注释的双引号表示),这一部分必不可少。

"""
Usage: train <json_file>
"""

上面解析部分的指令很简单,输入应为:

python test.py config.json

第二部分是main 函数:

if __name__ == "__main__":
  args = docopt.docopt(__doc__)
  args = json.load(open(args["<json_file>"]))
  print('==>Params')
  for key in args.keys():
    print('\t{}:{}\n'.format(key,args[key]))
  train(args) 

我将 config.json 设置为:

{
 "dataset":    "human_science",
 "length":     1000,
 "model":     "CNN",
 "log_dir":    "./logs/",
 "output_dir":   "./output/",
 "output_prefix": "human_science_CNN",
 
 "lr":0.01
}

命令行的输出应为:

Python 使用 docopt 解析json参数文件过程讲解

成功将参数传入train()函数

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python list 合并连接字符串的方法
Mar 09 Python
使用C语言扩展Python程序的简单入门指引
Apr 14 Python
python开发中range()函数用法实例分析
Nov 12 Python
Python正确重载运算符的方法示例详解
Aug 27 Python
python字符串的方法与操作大全
Jan 30 Python
python selenium 获取标签的属性值、内容、状态方法
Jun 22 Python
Python使用matplotlib绘制随机漫步图
Aug 27 Python
python url 参数修改方法
Dec 26 Python
python实现飞机大战游戏
Oct 26 Python
python获取全国城市pm2.5、臭氧等空气质量过程解析
Oct 12 Python
Linux下升级安装python3.8并配置pip及yum的教程
Jan 02 Python
Python 带星号(* 或 **)的函数参数详解
Feb 23 Python
Django项目中实现使用qq第三方登录功能
Aug 13 #Python
一篇文章搞定Python操作文件与目录
Aug 13 #Python
Python Django Cookie 简单用法解析
Aug 13 #Python
Django中ajax发送post请求 报403错误CSRF验证失败解决方案
Aug 13 #Python
Python人工智能之路 jieba gensim 最好别分家之最简单的相似度实现
Aug 13 #Python
Python人工智能之路 之PyAudio 实现录音 自动化交互实现问答
Aug 13 #Python
Django rstful登陆认证并检查session是否过期代码实例
Aug 13 #Python
You might like
实用函数4
2007/11/08 PHP
PHP setcookie指定domain参数后,在IE下设置cookie失效的解决方法
2011/09/09 PHP
PHP父类调用子类方法的代码例子
2014/04/09 PHP
微信支付开发告警通知实例
2016/07/12 PHP
PHP 与 js的通信(via ajax,json)
2010/11/16 Javascript
Jquery练习之表单验证实现代码
2010/12/14 Javascript
JavaScript实现计算字符串中出现次数最多的字符和出现的次数
2015/03/12 Javascript
javascript异步处理工作机制详解
2015/04/13 Javascript
jQuery对JSON数据进行排序输出的方法
2015/06/24 Javascript
javascript引用类型之时间Date和数组Array
2015/08/27 Javascript
jQuery实现简单的点赞效果
2020/05/29 Javascript
有关文件上传 非ajax提交 得到后台数据问题
2016/10/12 Javascript
JavaScript对象的浅拷贝与深拷贝实例分析
2018/07/25 Javascript
详解服务端预渲染之Nuxt(介绍篇)
2019/04/07 Javascript
Vue源码学习之关于对Array的数据侦听实现
2019/04/23 Javascript
通过实例解析js简易模块加载器
2019/06/17 Javascript
使用axios请求时,发送formData请求的示例
2019/10/29 Javascript
浅析vue cli3 封装Svgicon组件正确姿势(推荐)
2020/04/27 Javascript
js代码实现轮播图
2020/05/04 Javascript
浅析我对JS延迟异步脚本的思考
2020/10/12 Javascript
python if not in 多条件判断代码
2016/09/21 Python
Python实现网站注册验证码生成类
2017/06/08 Python
django数据关系一对多、多对多模型、自关联的建立
2019/07/24 Python
安装python3.7编译器后如何正确安装opnecv的方法详解
2020/06/16 Python
python 发送邮件的四种方法汇总
2020/12/02 Python
HTML5拍照和摄像机功能实战详解
2019/01/24 HTML / CSS
基本款天堂:Everlane
2017/05/13 全球购物
八年级历史教学反思
2014/01/10 职场文书
仓库组长岗位职责
2014/01/29 职场文书
毕业生自荐书
2014/02/03 职场文书
大学生通用个人自我评价
2014/04/27 职场文书
演讲稿的格式及范文
2014/08/22 职场文书
写给老婆的保证书
2015/02/27 职场文书
小学远程教育工作总结
2015/08/13 职场文书
《七律·长征》教学反思
2016/02/16 职场文书
Golang解析JSON对象
2022/04/30 Golang