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通过get,post方式发送http请求和接收http响应的方法
May 26 Python
详解python3中socket套接字的编码问题解决
Jul 01 Python
Python基于回溯法子集树模板解决全排列问题示例
Sep 07 Python
python如何使用unittest测试接口
Apr 04 Python
浅谈Python里面小数点精度的控制
Jul 16 Python
python 将json数据提取转化为txt的方法
Oct 26 Python
快速排序的四种python实现(推荐)
Apr 03 Python
用openCV和Python 实现图片对比,并标识出不同点的方式
Dec 19 Python
Selenium启动Chrome时配置选项详解
Mar 18 Python
Pycharm修改python路径过程图解
May 22 Python
python 将列表里的字典元素合并为一个字典实例
Sep 01 Python
python绘制箱型图
Apr 27 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调用三种数据库的方法(1)
2006/10/09 PHP
php fputcsv命令 写csv文件遇到的小问题(多维数组连接符)
2011/05/24 PHP
CentOS 6.3下安装PHP xcache扩展模块笔记
2014/09/10 PHP
PHP的Laravel框架中使用AdminLTE模板来编写网站后台界面
2016/03/21 PHP
php关联数组与索引数组及其显示方法
2018/03/12 PHP
PHP抽象类和接口用法实例详解
2019/07/20 PHP
PHP单文件上传原理及上传函数的封装操作示例
2019/09/02 PHP
JQuery 初体验(建议学习jquery)
2009/04/25 Javascript
jquery动态加载图片数据练习代码
2011/08/04 Javascript
使用jQuery避免鼠标双击的解决方案
2013/08/21 Javascript
动态加载dtree.js树treeview(示例代码)
2013/12/17 Javascript
实例详解JSON数据格式及json格式数据域字符串相互转换
2016/01/07 Javascript
javascript基础知识之html5轮播图实例讲解(44)
2017/02/17 Javascript
JS的Ajax与后端交互数据的实例
2018/08/08 Javascript
element上传组件循环引用及简单时间倒计时的实现
2018/10/01 Javascript
利用d3.js实现蜂巢图表带动画效果
2019/09/03 Javascript
小程序双头slider选择器的实现示例
2020/03/31 Javascript
[01:23]2019完美世界全国高校联赛(春季赛)合肥全国总决赛
2019/06/10 DOTA
python字符串连接的N种方式总结
2014/09/17 Python
简化Python的Django框架代码的一些示例
2015/04/20 Python
详解Swift中属性的声明与作用
2016/06/30 Python
python3之模块psutil系统性能信息使用
2018/05/30 Python
django组合搜索实现过程详解(附代码)
2019/08/06 Python
分享PyCharm的几个使用技巧
2019/11/10 Python
Django+RestFramework API接口及接口文档并返回json数据操作
2020/07/12 Python
django前端页面下拉选择框默认值设置方式
2020/08/09 Python
爬虫代理的cookie如何生成运行
2020/09/22 Python
如何利用python生成MD5并去重
2020/12/07 Python
Html5实现如何在两个div元素之间拖放图像
2013/03/29 HTML / CSS
工程部主管岗位职责
2013/11/17 职场文书
技能比赛获奖感言
2014/02/14 职场文书
人事部岗位职责范本
2014/03/05 职场文书
刘胡兰观后感
2015/06/16 职场文书
关于vue中如何监听数组变化
2021/04/28 Vue.js
Spring Boot实战解决高并发数据入库之 Redis 缓存+MySQL 批量入库问题
2022/02/12 Redis
Windows下载并安装MySQL8.0.x 版本的完整教程
2022/04/10 MySQL