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获取网页状态码示例
Mar 30 Python
Python学习pygal绘制线图代码分享
Dec 09 Python
教你利用Python玩转histogram直方图的五种方法
Jul 30 Python
python+PyQT实现系统桌面时钟
Jun 16 Python
​如何愉快地迁移到 Python 3
Apr 28 Python
python读取.mat文件的数据及实例代码
Jul 12 Python
Django RBAC权限管理设计过程详解
Aug 06 Python
Python基础之函数原理与应用实例详解
Jan 03 Python
python、PyTorch图像读取与numpy转换实例
Jan 13 Python
Python3 元组tuple入门基础
Feb 09 Python
Python实现RabbitMQ6种消息模型的示例代码
Mar 30 Python
Python try except else使用详解
Jan 12 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快速入门教程 (小偷采集程序)
2011/06/02 PHP
PHP字符串中特殊符号的过滤方法介绍
2014/02/18 PHP
Javascript - HTML的request类
2007/01/09 Javascript
javascript截取字符串(通过substring实现并支持中英文混合)
2013/06/24 Javascript
javascript中字符串的定义示例代码
2013/12/19 Javascript
JS获取select-option-text_value的方法
2013/12/26 Javascript
jquery模拟LCD 时钟的html文件源代码
2014/06/16 Javascript
node.js中的fs.rename方法使用说明
2014/12/16 Javascript
jQuery中[attribute^=value]选择器用法实例
2014/12/31 Javascript
深入理解JavaScript系列(43):设计模式之状态模式详解
2015/03/04 Javascript
JS文字球状放大效果代码分享
2015/08/19 Javascript
Flow之一个新的Javascript静态类型检查器
2015/12/21 Javascript
ionic在开发ios系统微信时键盘挡住输入框的解决方法(键盘弹出问题)
2016/09/06 Javascript
js实现将json数组显示前台table中
2017/01/10 Javascript
JavaScript通过mouseover()实现图片变大效果的示例
2017/12/20 Javascript
vue中锚点的三种方法
2018/07/06 Javascript
从vue源码解析Vue.set()和this.$set()
2018/08/30 Javascript
js比较两个单独的数组或对象是否相等的实例代码
2019/04/28 Javascript
微信小程序下拉框搜索功能的实现方法
2019/07/31 Javascript
如何基于javascript实现贪吃蛇游戏
2020/02/09 Javascript
JS中的const命令你真懂它吗
2020/03/08 Javascript
JavaScript/TypeScript 实现并发请求控制的示例代码
2021/01/18 Javascript
python实现在pickling的时候压缩的方法
2014/09/25 Python
零基础写python爬虫之抓取百度贴吧代码分享
2014/11/06 Python
在Python中处理列表之reverse()方法的使用教程
2015/05/21 Python
Python中的字符串类型基本知识学习教程
2016/02/04 Python
Python从使用线程到使用async/await的深入讲解
2018/09/16 Python
python3+selenium实现qq邮箱登陆并发送邮件功能
2019/01/23 Python
Python Django框架单元测试之文件上传测试示例
2019/05/17 Python
Python3+Selenium+Chrome实现自动填写WPS表单
2020/02/12 Python
2014年重阳节老干部座谈会上的讲话稿
2014/09/25 职场文书
村党的群众路线教育实践活动总结材料
2014/10/31 职场文书
2014年小学语文工作总结
2014/12/20 职场文书
高中地理教学反思
2016/02/19 职场文书
高中化学教学反思
2016/02/22 职场文书
Spring Security动态权限的实现方法详解
2022/06/16 Java/Android