安装:pip install docopt [root@shuffle-dev py_test]$ vim doc.py #! --drifting Drifting mine. """ from docopt import docopt if __name__ == '__main__': arguments = docopt(__doc__, version='Naval Fate 2.0') print(arguments) [root@shuffle-dev py_test]$ python ': True, 'remove': False, 'set': False, 'ship': True, 'shoot': False} 参考:http://hao.jobbole.com/docopt / https://www.jb51.net/article/109598.htm https://github.com/docopt/docopt
的文章中,我们全面了解了 docopt 的能力。 docopt 不同于使用 argparse 时需要考虑嵌套解析器、各类参数等问题,在使用 docopt 只需将我们要实现的 git 命令用接口描述先定义清楚即可。 想看整个源码,请戳 docopt-git.py[4] 。 对比 argparse 的实现版本,你会发现使用 docopt 来实现变得非常简单,子解析器、参数类型什么的统统不需要关心!这可以说是 docopt 最大的优势了。 关于 docopt 的讲解将告一段落,回顾下 docopt 的三步曲,加上今天的内容,感觉它的使用方式还是比 argparse 简单不少的。 现在,你已学会了两个命令行解析库的使用了。
docopt 就是基于这样的想法去设计的。 本系列文章默认使用 Python 3 作为解释器进行讲解。 3.2 解析命令行 定义好接口描述后,就可以使用 docopt 进行解析,写法非常简单: from docopt import docopt arguments = docopt(__doc__, options_first --sum Sum the nums (default: find the max). """ from docopt import docopt # 2. 解析命令行 arguments = docopt(__doc__, options_first=True) # 3. 参考资料 [1] docopt: http://docopt.org/ [2] docopt: http://docopt.org/
那么 docopt 的使用模式都有哪些呢?其接口描述中都支持哪些语法规则呢?本文将带你深入了解 docopt。 本系列文章默认使用 Python 3 作为解释器进行讲解。 那么在命令行中输入 1 2的时候,分别对应到的就是 x 和 y: """ Usage: cli <x> <y> """ from docopt import docopt arguments = docopt import docopt arguments = docopt(__doc__, argv=['-n', 'Eric']) print(arguments) arguments = docopt import docopt arguments = docopt(__doc__) print(arguments) 直接指定 delete -r,输出如下: $ python3 cli.py delete docopt arguments = docopt(__doc__, argv=['f1', 'f2']) print(arguments) 2.8 选项简写:[options] “[options
欢迎大家通过提交issue来投稿和推荐自己的项目~ 本期为大家推荐GitHub上5个优质的Python项目,它们分别是: •newscatcher•pycodestyle•pywinauto•real-url•docopt docopt Star:7k docopt[6]是一款Python风格的命令行参数解析工具,它通过解析Python文件开头的注释文档来解析命令行参数格式。 --drifting Drifting mine. """ from docopt import docopt if __name__ == '__main__': arg = docopt (__doc__, argv=None, help=True, version=None, options_first=False) print(arg) 然后在命令行执行命令就可以看到docopt : https://github.com/docopt/docopt
pip3 install ngxtop Collecting ngxtop Downloading ngxtop-0.0.3-py2.py3-none-any.whl (11 kB) Collecting docopt Downloading docopt-0.6.2.tar.gz (25 kB) Requirement already satisfied: pyparsing in /usr/lib/python3 tabulate Downloading tabulate-0.8.9-py3-none-any.whl (25 kB) Building wheels for collected packages: docopt Building wheel for docopt (setup.py) ... done Created wheel for docopt: filename=docopt-0.6.2-py2.py3 Installing collected packages: docopt, tabulate, ngxtop Successfully installed docopt-0.6.2 ngxtop-0.0.3
virtualenv -p /usr/bin/python3 venv 通过下面的命令激活它: $ . venv/bin/activate 3 解析参数 Python有很多写命令行应用的工具,我们选用docopt 这个简单易用的工具,我们先安装它: $ pip3 install docopt docopt可以按我们在文档字符串中定义的格式来解析参数, 4 获取数据 https://kyfw.12306.cn/otn
今天分享的文章,对 argparse、docopt、click 和 fire 这几个库做了横向对比,梳理了它们的异同与利弊,值得一读。 2.2、docopt 从 argparse 的理念可以看出,它是命令式的。这时候 docopt 另辟蹊径,声明式是不是也可以? docopt 就是基于这样的想法去设计的。 声明式的好处在于只要你掌握了声明式的语法,那么定义命令行的元信息就会很简单。 以下示例为 docopt 实现的 计算器程序: # 1. --sum Sum the nums (default: find the max). """ from docopt import docopt # 2. 相比于 argparse 和 docopt 需要自行对解析后的参数来做路由关系,简单了不少。
4. docopt:文档驱动,注重一致性docopt 的理念很独特,是通过命令行工具的使用文档来生成参数解析的逻辑。 你只需要写好工具的使用说明文档,按照一定的格式定义好命令、参数和选项,docopt 就能自动帮你解析命令行参数。 文件转换为 DOCX 文件Arguments: INPUT_PDF 输入 PDF 文件路径Options: -o OUTPUT_DOCX 输出 DOCX 文件路径"""from docopt input_pdf) converter.convert(output_docx) converter.close()if __name__ == '__main__': arguments = docopt 总结如果你只是开发一些简单的命令行工具,argparse 就够用了;要是追求简洁优雅的语法和强大的功能,click 是个不错的选择;想结合类型提示开发现代化的工具,可以试试 typer;而注重文档和代码一致性的话,docopt
使用docopt 优雅的完成命令行的输入 docopt 是一个很优雅的处理输入的一个模块,docopt可以根据你写的文档描述,可以自动为你生成解析器,可以非常容易的为你的python程序创建命令行界面。
比如: (Pdb) b 31 #在31行建立断点 Breakpoint 1 at c:\work\code\workspace\test\sqlalchemy\docopt.py :31 (Pdb) r #运行到断点处 > c:\work\code\workspace\test\sqlalchemy\docopt.py(31)<module
按照惯例,我们要像使用 argparse、docopt 和 click 一样使用 fire 来实现 git 命令。 为了让没读过 使用 xxx 实现 git 命令(xxx 指 argparse、docopt 和 click) 的小伙伴也能读明白本文,我们仍会对 git 常用命令和 gitpython 做一个简单介绍。 对比 argparse、docopt 和 click 的实现版本,你会发现使用 fire 来实现是最简单的: 相较于 argparse,子解析器、参数类型什么的统统不需要关心 相较于 docopt,参数解析和命令调用处理也不需要关心
virtualenv -p /usr/bin/python3 venv 通过下面的命令激活它: $ . venv/bin/activate 解析参数 Python有很多写命令行应用的工具,如argparse, docopt , options...这里,我们选用docopt这个简单易用的工具,我们先安装它: $ pip3 install docopt docopt可以按我们在文档字符串中定义的格式来解析参数,在tickets.py
HelloGitHub-Prodesire 涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库 点击本文最下方的“阅读原文”即可获取 一、前言 在本系列前面所有文章中,我们分别介绍了 argparse、docopt docopt 先用声明式的语法定义出参数,再过程式地解析命令行和实现业务逻辑。click 则是用装饰器的方式进一步简化显式的命令调用逻辑,但仍然不够面向对象。 间的转换变得更容易 通过预先为 REPL 设置所需的模块和变量,使得实用 REPL 更加容易 通过如下命令可快速安装 fire 库: pip install fire 三、快速开始 回忆下使用 argparse、docopt 和 click 实现命令行程序的步骤: 对于 argparse 来说,要先设置解析器,再定义参数,再解析命令行,最后实现业务逻辑(四步) 对于 docopt 来说,要先定义定义接口描述,再解析命令行,
Successfully built dockerpty docopt pyrsistent Installing collected packages: pycparser, cffi, zipp, bcrypt, pyrsistent, paramiko, importlib-metadata, docker, attrs, texttable, python-dotenv, jsonschema, docopt
Usage: snek [--type=TYPE] """ import docopt normal_snek = """\ --..,_ _ return { 'normal': normal_snek, 'fancy': fancy_snek, } def main(): args = docopt.docopt snek_types'): sneks[entry_point.name] = entry_point.load() return sneks def main(): args = docopt.docopt Usage: snek [--type=TYPE] """ import docopt import pkg_resources normal_snek = """\ --. snek_types'): sneks[entry_point.name] = entry_point.load() return sneks def main(): args = docopt.docopt
我们的程序使用Python3开发,下面在你的工作目录下建一个文件夹,进去创建一个虚拟环境: 通过下面的命令激活它: 解析参数 Python有很多写命令行应用的工具,如argparse, docopt, options...这里,我们选用docopt这个简单易用的工具,我们先安装它: docopt可以按我们在文档字符串中定义的格式来解析参数,在中: 下面我们运行一下这个程序: 我们得到下面的参数解析结果
通过该项目的实现,可以熟悉 Python3 基础及网络编程,以及 docopt,requests,prettytable 等库的使用。 ? 【Python 3 实现图片转彩色字符】 通过借助 docopt 库与 Pillow 库来构建命令行解析器获取指定图像并将其转换成相应样式的彩色字符图像,并在终端上将转化后的图像打印出来。
debug-trace Print lots of debugging information (-D NOTSET)"""from __future__ import print_functionfrom docopt _licence__ RE_SCN = re.compile("([0-9]+)\s+([0-9]+)\s+(.*)$", flags=re.M) def main(): args = docopt import urllibfrom tqdm import tqdmfrom docopt import docopt def my_hook(t): """ Wraps tqdm instance t.total = tsize t.update((b - last_b[0]) * bsize) last_b[0] = b return inner opts = docopt
按照惯例,我们要像使用 argparse 和 docopt 一样使用 click 来实现 git 命令。 为了让没读过 使用 xxx 实现 git 命令(xxx 指 argparse 和 docopt) 的小伙伴也能读明白本文,我们仍会对 git 常用命令和 gitpython 做一个简单介绍。 对比 argparse 和 click 的实现版本,你会发现使用 click 来实现变得特定简单: 相较于 argparse,子解析器、参数类型什么的统统不需要关心 相较于 docopt,参数解析和命令调用处理也不需要关心