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中使用HTMLParser解析HTML的教程
Apr 29 Python
Python本地与全局命名空间用法实例
Jun 16 Python
windows及linux环境下永久修改pip镜像源的方法
Nov 28 Python
win与linux系统中python requests 安装
Dec 04 Python
Python元组操作实例分析【创建、赋值、更新、删除等】
Jul 24 Python
基于django ManyToMany 使用的注意事项详解
Aug 09 Python
Python实现图片裁剪的两种方式(Pillow和OpenCV)
Oct 30 Python
pycharm运行scrapy过程图解
Nov 22 Python
python:动态路由的Flask程序代码
Nov 22 Python
详解从Django Allauth中进行登录改造小结
Dec 18 Python
python3实现往mysql中插入datetime类型的数据
Mar 02 Python
python里glob模块知识点总结
Jan 05 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 将bmp图片转为jpg等其他任意格式的图片
2009/06/29 PHP
收藏的PHP常用函数 推荐收藏保存
2010/02/21 PHP
Yii中CGridView关联表搜索排序方法实例详解
2014/12/03 PHP
PHP表单提交后引号前自动加反斜杠的原因及三种办法关闭php魔术引号
2015/09/30 PHP
php指定长度分割字符串str_split函数用法示例
2017/01/30 PHP
PHP针对伪静态的注入总结【附asp与Python相关代码】
2017/08/01 PHP
JQuery SELECT单选模拟jQuery.select.js
2009/11/12 Javascript
表单JS弹出填写提示效果代码
2011/04/16 Javascript
js关闭父窗口时关闭子窗口
2013/04/01 Javascript
深入了解javascript中的prototype与继承
2013/04/14 Javascript
使用JS或jQuery模拟鼠标点击a标签事件代码
2014/03/10 Javascript
jQuery的:parent选择器定义和用法
2014/07/01 Javascript
jQuery中:has选择器用法实例
2014/12/30 Javascript
JS+CSS实现的拖动分页效果实例
2015/05/11 Javascript
js提交form表单,并传递参数的实现方法
2016/05/25 Javascript
jQuery的Read()方法代替原生JS详解
2016/11/08 Javascript
ajax级联菜单实现方法实例分析
2016/11/28 Javascript
easyUI下拉列表点击事件使用方法
2017/05/18 Javascript
Vue使用axios出现options请求方法
2019/05/30 Javascript
mapboxgl实现带箭头轨迹线的代码
2021/01/04 Javascript
Python中的匿名函数使用简介
2015/04/27 Python
使用python实现rsa算法代码
2016/02/17 Python
python flask 多对多表查询功能
2017/06/25 Python
对django2.0 关联表的必填on_delete参数的含义解析
2019/08/09 Python
python爬虫 urllib模块发起post请求过程解析
2019/08/20 Python
python+tkinter实现学生管理系统
2019/08/20 Python
解决Python 写文件报错TypeError的问题
2020/10/23 Python
python爬虫多次请求超时的几种重试方法(6种)
2020/12/01 Python
CSS3的Flexbox布局的简明入门指南
2016/04/08 HTML / CSS
CSS3解析抖音LOGO制作的方法步骤
2019/04/11 HTML / CSS
薇诺娜官方网上商城:专注敏感肌肤
2017/05/25 全球购物
学前教育毕业生自荐信
2013/10/29 职场文书
财务副总经理工作职责
2013/11/25 职场文书
诚信考试标语
2014/06/24 职场文书
培训后的感想
2015/08/07 职场文书
Mysql查询时间区间日期列表,不会由于数据表数据影响
2022/04/19 MySQL