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 正则表达式 概述及常用字符
May 04 Python
python实现图片批量剪切示例
Mar 25 Python
Python中的模块和包概念介绍
Apr 13 Python
在Python的Django框架中生成CSV文件的方法
Jul 22 Python
python 线程的暂停, 恢复, 退出详解及实例
Dec 06 Python
详解Python 实现元胞自动机中的生命游戏(Game of life)
Jan 27 Python
在Python中使用Neo4j的方法
Mar 14 Python
python3.7 的新特性详解
Jul 25 Python
Django rstful登陆认证并检查session是否过期代码实例
Aug 13 Python
python GUI库图形界面开发之PyQt5滚动条控件QScrollBar详细使用方法与实例
Mar 06 Python
django实现更改数据库某个字段以及字段段内数据
Mar 31 Python
python如何控制进程或者线程的个数
Oct 16 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
如何选购合适的收音机
2021/03/01 无线电
防止用户利用PHP代码DOS造成用光网络带宽
2011/03/01 PHP
thinkphp3.2中Lite文件替换框架入口文件或应用入口文件的方法
2015/05/21 PHP
Ecshop 后台添加新功能栏目及管理权限设置教程
2017/11/21 PHP
实例分析10个PHP常见安全问题
2019/07/09 PHP
Yii框架Session与Cookie使用方法示例
2019/10/14 PHP
js 鼠标点击事件及其它捕获
2009/06/04 Javascript
Jquery 扩展方法
2010/05/06 Javascript
JavaScript高级程序设计 阅读笔记(七) ECMAScript中的语句
2012/02/27 Javascript
javascript实现简单的Map示例介绍
2013/12/23 Javascript
JavaScript实现网页截图功能
2014/10/16 Javascript
jQuery中prepend()方法用法实例
2014/12/25 Javascript
原生js和jQuery写的网页选项卡特效对比
2015/04/27 Javascript
javascript实现秒表计时器的制作方法
2017/02/16 Javascript
从零学习node.js之简易的网络爬虫(四)
2017/02/22 Javascript
vue2.0实战之使用vue-cli搭建项目(2)
2017/03/27 Javascript
vue获取当前点击的元素并传值的实例
2018/03/09 Javascript
详解JavaScript原生封装ajax请求和Jquery中的ajax请求
2019/02/14 jQuery
详解小程序退出页面时清除定时器
2019/04/28 Javascript
vue:el-input输入时限制输入的类型操作
2020/08/05 Javascript
Vue-cli打包后如何本地查看的操作
2020/09/02 Javascript
JS实现小米轮播图
2020/09/21 Javascript
js实现有趣的倒计时效果
2021/01/19 Javascript
Python 用户登录验证的小例子
2013/03/06 Python
Python 序列的方法总结
2016/10/18 Python
CentOS下Python3的安装及创建虚拟环境的方法
2018/11/28 Python
解决python gdal投影坐标系转换的问题
2020/01/17 Python
Django创建一个后台的基本步骤记录
2020/10/02 Python
python gui开发——制作抖音无水印视频下载工具(附源码)
2021/02/07 Python
详解基于canvas的视频遮罩插件
2018/01/04 HTML / CSS
高校师德师风自我剖析材料
2014/09/29 职场文书
教师三严三实心得体会
2014/10/11 职场文书
服务承诺书
2015/01/19 职场文书
小学音乐课教学反思
2016/02/18 职场文书
详解Js模块化的作用原理和方案
2021/04/29 Javascript
解决 Redis 秒杀超卖场景的高并发
2022/04/12 Redis