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 相关文章推荐
pyqt4教程之实现半透明的天气预报界面示例
Mar 02 Python
Python 将RGB图像转换为Pytho灰度图像的实例
Nov 14 Python
Python 3.7新功能之dataclass装饰器详解
Apr 21 Python
python实现定时提取实时日志程序
Jun 22 Python
利用Python将数值型特征进行离散化操作的方法
Nov 06 Python
Python 实现两个服务器之间文件的上传方法
Feb 13 Python
python队列Queue的详解
May 10 Python
django最快程序开发流程详解
Jul 19 Python
pandas 缺失值与空值处理的实现方法
Oct 12 Python
Django连接数据库并实现读写分离过程解析
Nov 13 Python
Django后端发送小程序微信模板消息示例(服务通知)
Dec 17 Python
python实现文字版扫雷
Apr 24 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函数
2010/01/11 PHP
phpmyadmin打开很慢的解决方法
2014/04/21 PHP
PHP5.6.8连接SQL Server 2008 R2数据库常用技巧分析总结
2019/05/06 PHP
javascript iframe内的函数调用实现方法
2009/07/19 Javascript
网页中的图片的处理方法与代码
2009/11/26 Javascript
js限制文本框只能输入数字(正则表达式)
2012/07/15 Javascript
通过复制Table生成word和excel的javascript代码
2014/01/20 Javascript
JavaScript学习笔记之JS函数
2015/01/22 Javascript
javascript制作2048游戏
2015/03/30 Javascript
jQuery实现图片轮播效果代码
2016/09/27 Javascript
JS组件系列之MVVM组件构建自己的Vue组件
2017/04/28 Javascript
原生JS实现图片懒加载(lazyload)实例
2017/06/13 Javascript
解决Vue 通过下表修改数组,页面不渲染的问题
2018/03/08 Javascript
vue2过滤器模糊查询方法
2018/09/16 Javascript
Koa 使用小技巧(小结)
2018/10/22 Javascript
微信小程序学习笔记之跳转页面、传递参数获得数据操作图文详解
2019/03/28 Javascript
Vue+Koa2 打包后进行线上部署的教程详解
2019/07/31 Javascript
Node.js API详解之 net模块实例分析
2020/05/18 Javascript
解决ant design vue 表格a-table二次封装,slots渲染的问题
2020/10/28 Javascript
[48:51]完美世界DOTA2联赛PWL S2 Magma vs InkIce 第一场 11.28
2020/12/02 DOTA
Python中字典和JSON互转操作实例
2015/01/19 Python
在Python中使用CasperJS获取JS渲染生成的HTML内容的教程
2015/04/09 Python
Python导入oracle数据的方法
2015/07/10 Python
Python 包含汉字的文件读写之每行末尾加上特定字符
2016/12/12 Python
Python实现的根据文件名查找数据文件功能示例
2018/05/02 Python
python实现猜数字小游戏
2020/03/24 Python
python使用turtle库绘制时钟
2020/03/25 Python
Python字符串格式化输出代码实例
2019/11/22 Python
解决python执行较大excel文件openpyxl慢问题
2020/05/15 Python
python中random.randint和random.randrange的区别详解
2020/09/20 Python
Python Spyder 调出缩进对齐线的操作
2021/02/26 Python
H5新属性audio音频和video视频的控制详解(推荐)
2016/12/09 HTML / CSS
是否可以从一个static方法内部发出对非static方法的调用?
2014/08/18 面试题
生物化工专业个人自荐信
2013/09/26 职场文书
热爱祖国演讲稿
2014/05/04 职场文书
初中开学典礼新闻稿
2015/07/17 职场文书