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使用介绍
Nov 30 Python
Python使用random和tertools模块解一些经典概率问题
Jan 28 Python
Python中实现对Timestamp和Datetime及UTC时间之间的转换
Apr 08 Python
Python3.x中自定义比较函数
Apr 24 Python
Python中使用插入排序算法的简单分析与代码示例
May 04 Python
Python利用multiprocessing实现最简单的分布式作业调度系统实例
Nov 14 Python
pandas数据预处理之dataframe的groupby操作方法
Apr 13 Python
对python创建及引用动态变量名的示例讲解
Nov 10 Python
python程序封装为win32服务的方法
Mar 07 Python
详解Django定时任务模块设计与实践
Jul 24 Python
django模板获取list中指定索引的值方式
May 14 Python
Python代码实现双链表
May 25 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
模板引擎正则表达式调试小技巧
2011/07/20 PHP
基于php使用memcache存储session的详解
2013/06/25 PHP
PHP实现的MongoDB数据库操作类分享
2014/05/12 PHP
ThinkPHP like模糊查询,like多匹配查询,between查询,in查询,一般查询书写方法
2018/09/26 PHP
删除select中所有option选项jquery代码
2013/08/12 Javascript
jQuery中get和post方法传值测试及注意事项
2014/08/08 Javascript
浅谈JavaScript Array对象
2014/12/29 Javascript
DOM节点深度克隆函数cloneNode()用法实例
2015/01/12 Javascript
jQuery制作拼图小游戏
2015/01/12 Javascript
JavaScript中操作字符串之localeCompare()方法的使用
2015/06/06 Javascript
js实现的早期滑动门菜单效果代码
2015/08/27 Javascript
JS编写函数实现对身份证号码最后一位的验证功能
2016/12/29 Javascript
微信小程序 UI与容器组件总结
2017/02/21 Javascript
Vue2.0利用 v-model 实现组件props双向绑定的优美解决方案
2017/03/13 Javascript
jquery实现楼层滚动效果
2018/01/01 jQuery
使用vuex解决刷新页面state数据消失的问题记录
2019/05/08 Javascript
微信小程序封装的HTTP请求示例【附升级版】
2019/05/11 Javascript
Python中动态获取对象的属性和方法的教程
2015/04/09 Python
Python创建模块及模块导入的方法
2015/05/27 Python
Python数据类型详解(二)列表
2016/05/08 Python
Python中pow()和math.pow()函数用法示例
2018/02/11 Python
Opencv-Python图像透视变换cv2.warpPerspective的示例
2019/04/11 Python
django做form表单的数据验证过程详解
2019/07/26 Python
python实现引用其他路径包里面的模块
2020/03/09 Python
Django Admin 上传文件到七牛云的示例代码
2020/06/20 Python
学python需要去培训机构吗
2020/07/01 Python
Python实现疫情地图可视化
2021/02/05 Python
python解决OpenCV在读取显示图片的时候闪退的问题
2021/02/23 Python
澳大利亚墨水站Ink Station:墨水和碳粉打印机墨盒
2019/03/24 全球购物
宿舍打麻将检讨书
2014/01/24 职场文书
酒店总经理助理岗位职责
2014/02/01 职场文书
幼儿评语大全
2014/04/30 职场文书
优秀团员事迹材料2000字
2014/08/20 职场文书
授权委托书公证
2014/09/14 职场文书
环保守法证明
2015/06/24 职场文书
班级元旦晚会开幕词
2016/03/04 职场文书