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 02 Python
Python抓取淘宝下拉框关键词的方法
Jul 08 Python
Python读取word文本操作详解
Jan 22 Python
利用Python在一个文件的头部插入数据的实例
May 02 Python
python之文件读取一行一行的方法
Jul 12 Python
Python Web框架之Django框架cookie和session用法分析
Aug 16 Python
Python实现银行账户资金交易管理系统
Jan 03 Python
python 最简单的实现适配器设计模式的示例
Jun 30 Python
Python 如何反方向迭代一个序列
Jul 28 Python
Python修改DBF文件指定列
Dec 19 Python
PyTorch 如何设置随机数种子使结果可复现
May 12 Python
python可视化分析绘制带趋势线的散点图和边缘直方图
Jun 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
php判断ip黑名单程序代码实例
2014/02/24 PHP
PHP调用存储过程返回值不一致问题的解决方法分析
2016/04/26 PHP
PHP二分查找算法示例【递归与非递归方法】
2016/09/29 PHP
PHP SFTP实现上传下载功能
2017/07/26 PHP
php实现算术验证码功能
2018/12/05 PHP
JavaScript实现非常简单实用的下拉菜单效果
2015/08/27 Javascript
JS中的eval 为什么加括号
2016/04/13 Javascript
详解Jquery Easyui的验证扩展
2017/01/09 Javascript
jQuery插件FusionCharts绘制的2D双面积图效果示例【附demo源码】
2017/04/11 jQuery
jQuery.Ajax()的data参数类型详解
2017/07/23 jQuery
vue.js移动端app实战1:初始配置详解
2017/07/24 Javascript
Vue ElementUI之Form表单验证遇到的问题
2017/08/21 Javascript
在 Angular中 使用 Lodash 的方法
2018/02/11 Javascript
layui radio单选限制下一个radio单选的实例
2019/09/03 Javascript
layui实现多图片上传并限制上传的图片数量
2019/09/26 Javascript
vuex存储token示例
2019/11/11 Javascript
《javascript设计模式》学习笔记五:Javascript面向对象程序设计工厂模式实例分析
2020/04/08 Javascript
[45:18]2018DOTA2亚洲邀请赛 4.3 突围赛 Optic vs iG 第一场
2018/04/04 DOTA
[45:16]完美世界DOTA2联赛PWL S3 Magma vs Phoenix 第一场 12.12
2020/12/16 DOTA
python通过pip更新所有已安装的包实现方法
2017/05/19 Python
Python利用flask sqlalchemy实现分页效果
2020/08/02 Python
python实战之实现excel读取、统计、写入的示例讲解
2018/05/02 Python
Python拼接字符串的7种方法总结
2018/11/01 Python
对python中Json与object转化的方法详解
2018/12/31 Python
django之使用celery-把耗时程序放到celery里面执行的方法
2019/07/12 Python
python的pyecharts绘制各种图表详细(附代码)
2019/11/11 Python
Django values()和value_list()的使用
2020/03/31 Python
使用python-Jenkins批量创建及修改jobs操作
2020/05/12 Python
python调用私有属性的方法总结
2020/07/24 Python
金鑫耀Java笔试题
2014/09/06 面试题
高三高考决心书
2014/03/11 职场文书
开展党的群众路线教育实践活动总结报告
2014/10/31 职场文书
个人总结与自我评价
2015/02/14 职场文书
先进工作者主要事迹材料
2015/11/03 职场文书
用Python写一个简易版弹球游戏
2021/04/13 Python
Redis keys命令的具体使用
2022/06/05 Redis