继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Python 参数解析库 docopt 简单使用图文教程

绝地无双
关注TA
已关注
手记 333
粉丝 59
获赞 326

Part 1  说明:

0  嫌啰嗦的直接到 正式开始 的位置。
1 docopt 是一个参数解析的库。所以这个算是一个小教程。如果没有python基础,还是建 议先去学一下。
2  另外百度一下发现了 optparse 这个python 系统自带的库。简单的看了看。知乎上大神说 珍爱生命 远离 optparse。下了我一跳。这里不代表我的观点。毕竟自带的,可以去看看比较一下。。。不过这不是本文的重点了。
3  百度了半天的docopt 教程只找到了这个 看了还是没怎么懂。算了,还是自己搞一搞吧。

part 2 背景:

前几天,看了一个教程。制作一个火车票查看器这个小功能作者写得挺有思路确实写得不错,如果感兴趣可以去看看这个文章。制作完这个小的工具以后就能用命令去查询相应的火车票情况。 so cool。

火车票查询输出结果.png


python学艺不精+_+,想探究一下命令是怎么一步步控制执行代码的。打开作者的文件里面发现了只是这个样子。

火车票的py实现.png

甚至都没有看到怎么去写出想要的规则??好吧,一开始我也是拒绝的。那么就去找一下源码吧。这里的说明也是最权威了,于是找到了这么一段话:

git截图.png

大概意思是: 我擦,你还用原始的方式写解析参数? 别傻了,你是不是想一边写注释 一边 顺带把解析规则也写了,对!docopt就是要让你这么吊~ (翻译的不对?)

看了上面的这段话我也是深深的震精了? 什么? 注释都能用在程序里面? 合理吗? 于是自己还是去探究了一下如下函数:

doc小demo.png

也就是说 这个函数里面的注释能通过一个doc  参数打印出来,当然要是这个是整个文档的说明,那么打印的就是文档对应的doc 这里就不测试了,下面的就是这样的例子。docopt的作者也是真的吊吊吊。

好吧安装 docopt 的方式 pip3 install docopt 。上面写了那么多废话。都懒得删除了。。。

正式开始

docopt 用了一天了感觉完整的分析一个demo 就能说明其中基本用法了。。


完整的demo.png

上图是一个完整的demo

完整的demo.png

主函数就是调用罢了。没什么好说的

看上面分了4个部分 Usage Arguments Options Examples 各个分析一下:
Options:

Options.png

指令 zhangTestArgument.py -qvrh  123.txt 里面的参数 是 -qvrh 下面是对参数的说明:
-h  --help   这两个没什么卵区别,中间可以使 空格也可以是 逗号!如果是 长指令 前面是用 -- (例如 --help)

options2.png


这种还是纠结了一下:
-q 其实代表的是 --quite Sel 那么当我们执行  zhangTestArgument.py -q [FILE] 这个指令的时候 实际上相当于是 zhangTestArgument.py --quite  Sel  [FILE] 这样就是两个参数了~

Arguments:

Arguments.png

这里面是叙述的是上面的参数  后面跟着的是说明了这个参数的作用。(笔者看了看这块感觉除了说明一些是做什么的,好像没啥用了。)

Examples:

Examples.png


这就是告诉怎么用。。。

Usage:(Usage是声明指令怎么使用的部分,必须要写的,下面是重中之重)


Usage.png

  1. zhangTestArgument.py 这个部分是名字 如指令 python3 XXXX  -vf   file.txt 其中的 XXXX 就是这

  2. [-vqrh]  这个是参数位置 这里面的参数必须要在下面的 options 选项中声明. 这里面添加了 [] 这个是因为 这些参数是可选的,要是直接写成 -v 这样那么想执行这条指令必须写-v。其实可以写成 [-v][-q][-r][-h],这样也行,但是怪怪的。另外 如果参数是长参数 那么不能直接简写成 -vqrh 的形式  只能是  --help --file --nimei 这种形式。

  3. [FILE] 这个是参数  加上[]作用同上。这个就像是 定义了一个 str变量一样。 可以给str 赋值 后期可以取出来。

  4. 注意到 ... 了吗? 这个的作用是让前面一个参数重复多次,最后以数组输出。没看懂没关系一会看看最后的输出就懂了。

  5. (-left | -right)  这个()的作用是说这里面必须要选择一个 要么是 --right 要么是 --left,注意 带有()的是必须要选择的。

好了,现在按照上面的弄应该是能写出想要的指令了,然后去终端找到对应的文件之后执行一下指令吧。

执行之后.png

如果指令正确那么就能输出上面格式的内容了,这个是以一个字典的形式来输出的。后期可以根据字典里面的各个数据来分别处理各种情况了。
另外上面还提到了一个 ... 的问题 注意看看 上图中的 FILE 对应的是一个数组。所以 ... 的作用就是声明 [FILE] 是一个数组 所以 可以添加多个,输出的是数组。

后续:
1.只说明了基础的用法。
2.可能写的不是那么清晰。有不明白的可以留言。
3.点击这个是我自己写的 所有带 zhang 前缀的是我自己复写的,有对应的说明。


作者:韩大熊宝要姓张
链接:https://www.jianshu.com/p/9ae4cf88e552


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP