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爬虫抓取暴走漫画上gif图片的实例分享
Apr 20 Python
总结python实现父类调用两种方法的不同
Jan 15 Python
彻底搞懂Python字符编码
Jan 23 Python
python之pandas用法大全
Mar 13 Python
ubuntu 18.04搭建python环境(pycharm+anaconda)
Jun 14 Python
python rsync服务器之间文件夹同步脚本
Aug 29 Python
Python中生成一个指定长度的随机字符串实现示例
Nov 06 Python
selenium+python配置chrome浏览器的选项的实现
Mar 18 Python
python实现梯度下降法
Mar 24 Python
Python响应对象text属性乱码解决方案
Mar 31 Python
python GUI模拟实现计算器
Jun 22 Python
python实现语音常用度量方法的代码详解
May 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
使用sockets:从新闻组中获取文章(二)
2006/10/09 PHP
PHP与MySQL开发中页面出现乱码的一种解决方法
2007/07/29 PHP
33道php常见面试题及答案
2015/07/06 PHP
php while循环控制的简单实例
2016/05/30 PHP
PHP CodeIgniter分页实例及多条件查询解决方案(推荐)
2017/05/20 PHP
使用js获取QueryString的方法小结
2010/02/28 Javascript
javascript 浏览器检测代码精简版
2010/03/04 Javascript
jQuery动态添加 input type=file的实现代码
2012/06/14 Javascript
JS实现下拉框的动态添加(附效果)
2013/04/03 Javascript
跟我学习javascript的undefined与null
2015/11/17 Javascript
理解javascript中的Function.prototype.bind的方法
2017/02/03 Javascript
jQuery插件autocomplete使用详解
2017/02/04 Javascript
详解Vue2中组件间通信的解决全方案
2017/07/28 Javascript
Angular 开发学习之Angular CLI的安装使用
2017/12/31 Javascript
Angular父子组件通过服务传参的示例方法
2018/10/31 Javascript
在element-ui的select下拉框加上滚动加载
2019/04/18 Javascript
react国际化化插件react-i18n-auto使用详解
2020/03/31 Javascript
浅谈在vue-cli3项目中解决动态引入图片img404的问题
2020/08/04 Javascript
[01:03:37]Secret vs VGJ.S Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
Python验证文件是否可读写代码分享
2017/12/11 Python
Python实现简单的文本相似度分析操作详解
2018/06/16 Python
python通过http下载文件的方法详解
2019/07/26 Python
django 做 migrate 时 表已存在的处理方法
2019/08/31 Python
CSS3中文字镂空、透明值、阴影效果设置示例小结
2016/03/07 HTML / CSS
荷兰多品牌网上鞋店:Stoute Schoenen
2017/08/24 全球购物
杭州信雅达系统.NET工程师面试试题
2015/02/08 面试题
用Python匹配HTML tag的时候,<.*>和<.*?>有什么区别
2012/11/04 面试题
简历中求职的个人自我评价
2013/12/03 职场文书
售后求职信范文
2014/03/15 职场文书
小学师德标兵先进事迹材料
2014/05/25 职场文书
毕业生实习证明
2014/09/19 职场文书
地下停车场租赁协议范本
2014/10/07 职场文书
2014年教育工作总结
2014/11/26 职场文书
2014年教研工作总结
2014/12/06 职场文书
Python基础之数据结构详解
2021/04/28 Python
Windows 11要来了?微软文档揭示Win11太阳谷 / Win10有两个不同版本
2021/11/21 数码科技