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程序代码的几种方法总结
Apr 28 Python
实现python版本的按任意键继续/退出
Sep 26 Python
python opencv之SIFT算法示例
Feb 24 Python
python爬虫 使用真实浏览器打开网页的两种方法总结
Apr 21 Python
Tensorflow实现卷积神经网络的详细代码
May 24 Python
Python操作MySQL数据库的方法
Jun 20 Python
解决pycharm运行时interpreter为空的问题
Oct 29 Python
pyqt5 从本地选择图片 并显示在label上的实例
Jun 13 Python
Python多叉树的构造及取出节点数据(treelib)的方法
Aug 09 Python
python打包成so文件过程解析
Sep 28 Python
python爬虫使用正则爬取网站的实现
Aug 03 Python
python pygame 开发五子棋双人对弈
May 02 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
php操作excel文件 基于phpexcel
2010/07/02 PHP
解析MySql与Java的时间类型
2013/06/22 PHP
php绘制一条弧线的方法
2015/01/24 PHP
Yii框架实现多数据库配置和操作的方法
2017/05/25 PHP
List Installed Software Features
2007/06/11 Javascript
JavaScript中也使用$美元符号来代替document.getElementById
2010/06/19 Javascript
jQuery EasyUI API 中文文档 搜索框
2011/09/29 Javascript
JavaScript中获取高度和宽度函数总结
2014/10/08 Javascript
jQuery Easyui使用(二)之可折叠面板动态加载无效果的解决方法
2016/08/17 Javascript
Javascript学习之谈谈JS的全局变量跟局部变量(推荐)
2016/08/28 Javascript
HTML5 canvas 9绘制图片实例详解
2016/09/06 Javascript
JS实现页面中所有img对象添加onclick事件及新窗口查看图片的方法
2016/12/27 Javascript
JavaScript中数组Array.sort()排序方法详解
2017/03/01 Javascript
vue 表单验证按钮事件交由父组件触发的方法
2018/12/17 Javascript
JavaScript数据结构与算法之二叉树实现查找最小值、最大值、给定值算法示例
2019/03/01 Javascript
详解Vue依赖收集引发的问题
2019/04/22 Javascript
Angular6使用forRoot() 注册单一实例服务问题
2019/08/27 Javascript
JavaScript Window浏览器对象模型原理解析
2020/05/30 Javascript
微信小程序完美解决scroll-view高度自适应问题的方法
2020/08/08 Javascript
[06:49]2018DOTA2国际邀请赛寻真——VirtusPro傲视群雄
2018/08/12 DOTA
Python之父谈Python的未来形式
2016/07/01 Python
Python简单遍历字典及删除元素的方法
2016/09/18 Python
基于python2.7实现图形密码生成器的实例代码
2019/11/05 Python
sklearn+python:线性回归案例
2020/02/24 Python
html5 跨文档消息传输示例探讨
2013/04/01 HTML / CSS
JPA面试常见问题
2016/11/14 面试题
出生医学证明样本
2014/01/17 职场文书
大学自主招生推荐信
2014/05/10 职场文书
干部职工纪律作风整改措施思想汇报
2014/10/11 职场文书
2014幼儿园中班工作总结
2014/11/10 职场文书
国庆节慰问信
2015/02/15 职场文书
副总经理岗位职责范本
2015/04/08 职场文书
2015年保洁工作总结范文
2015/04/28 职场文书
MongoDB balancer的使用详解
2021/04/30 MongoDB
MySQL连表查询分组去重的实现示例
2021/07/01 MySQL
如何在Python中妥善使用进度条详解
2022/04/05 Python