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批量修改文件后缀的方法
Jan 26 Python
解密Python中的描述符(descriptor)
Jun 03 Python
Django中模型Model添加JSON类型字段的方法
Jun 17 Python
深入解答关于Python的11道基本面试题
Apr 01 Python
python虚拟环境virtualenv的使用教程
Oct 20 Python
pygame游戏之旅 游戏中添加显示文字
Nov 20 Python
Python字符串的一些操作方法总结
Jun 10 Python
django多文件上传,form提交,多对多外键保存的实例
Aug 06 Python
python 使用while写猜年龄小游戏过程解析
Oct 07 Python
python基于K-means聚类算法的图像分割
Oct 30 Python
Python使用type动态创建类操作示例
Feb 29 Python
Pyside2中嵌入Matplotlib的绘图的实现
Feb 22 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使用CURL伪造IP和来源实例详解
2015/01/15 PHP
PHP实现操作redis的封装类完整实例
2015/11/14 PHP
PHP sdk实现在线打包代码示例
2020/12/09 PHP
asp javascript 实现关闭窗口时保存数据的办法
2007/11/24 Javascript
js 省地市级联选择
2010/02/07 Javascript
jQuery中使用了document和window哪些属性和方法小结
2011/09/13 Javascript
纯Javascript实现Windows 8 Metro风格实现
2013/10/15 Javascript
让JavaScript和其它资源并发下载的方法
2014/10/16 Javascript
javascript移动开发中touch触摸事件详解
2016/03/18 Javascript
Svg.js实例教程及使用手册详解(一)
2016/05/16 Javascript
jQuery实现表格文本框淡入更改值后淡出效果
2016/09/27 Javascript
如何解决jQuery EasyUI 已打开Tab重新加载问题
2016/12/19 Javascript
JS作用域深度解析
2016/12/29 Javascript
js获取ip和地区
2017/03/10 Javascript
AngularJS2中一种button切换效果的实现方法(二)
2017/03/27 Javascript
bootstrap多层模态框滚动条消失的问题
2017/07/21 Javascript
JS处理一些简单计算题
2018/02/24 Javascript
webpack配置打包后图片路径出错的解决
2018/04/26 Javascript
Vue中在新窗口打开页面及Vue-router的使用
2018/06/13 Javascript
jquery.pagination.js分页使用教程
2018/10/23 jQuery
微信小程序实现滚动加载更多的代码
2019/12/06 Javascript
D3.js 实现带伸缩时间轴拓扑图的示例代码
2020/01/20 Javascript
解决Vue的项目使用Element ui 走马灯无法实现的问题
2020/08/03 Javascript
Python判断值是否在list或set中的性能对比分析
2016/04/16 Python
Python 生成 -1~1 之间的随机数矩阵方法
2018/08/04 Python
Python 脚本实现淘宝准点秒杀功能
2019/11/13 Python
python 实现将list转成字符串,中间用空格隔开
2019/12/25 Python
CSS Grid布局教程之网格单元格布局
2014/12/30 HTML / CSS
html5的websockets全双工通信详解学习示例
2014/02/26 HTML / CSS
.NET程序员的数据库面试题
2012/10/10 面试题
酒店司机岗位职责
2013/12/14 职场文书
2014年办公室人员工作总结
2014/12/09 职场文书
2014年体检中心工作总结
2014/12/23 职场文书
北京爱情故事观后感
2015/06/12 职场文书
2016年记者节感言
2015/12/08 职场文书
python基于scrapy爬取京东笔记本电脑数据并进行简单处理和分析
2021/04/14 Python