Python 参数解析库 docopt 简单使用图文教程。(内附教程分享)

Part 1 说明:

0 嫌啰嗦的直接到 正式开始 的位置。

1 docopt 是一个参数解析的库。所以这个算是一个小教程。如果没有python基础,还是建 议先去学一下。

2 另外百度一下发现了 optparse 这个python 系统自带的库。简单的看了看。知乎上大神说 珍爱生命 远离 optparse。下了我一跳。这里不代表我的观点。毕竟自带的,可以去看看比较一下。。。不过这不是本文的重点了。

3 百度了半天的docopt 教程只找到了这个 看了还是没怎么懂。算了,还是自己搞一搞吧。

part 2 背景:

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

Python 参数解析库 docopt 简单使用图文教程。(内附教程分享)

火车票查询输出结果.png

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

Python 参数解析库 docopt 简单使用图文教程。(内附教程分享)

火车票的py实现.png

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

Python 参数解析库 docopt 简单使用图文教程。(内附教程分享)

git截图.png

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

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

Python 参数解析库 docopt 简单使用图文教程。(内附教程分享)

doc小demo.png

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

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

正式开始

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

Python 参数解析库 docopt 简单使用图文教程。(内附教程分享)

完整的demo.png

上图是一个完整的demo

Python 参数解析库 docopt 简单使用图文教程。(内附教程分享)

完整的demo.png

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

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

Options:

Python 参数解析库 docopt 简单使用图文教程。(内附教程分享)

Options.png

指令 zhangTestArgument.py -qvrh 123.txt 里面的参数 是 -qvrh 下面是对参数的说明:

-h --help 这两个没什么卵区别,中间可以使 空格也可以是 逗号!如果是 长指令 前面是用 -- (例如 --help)

Python 参数解析库 docopt 简单使用图文教程。(内附教程分享)

options2.png

这种还是纠结了一下:

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

Arguments:

Python 参数解析库 docopt 简单使用图文教程。(内附教程分享)

Arguments.png

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

Examples:

Python 参数解析库 docopt 简单使用图文教程。(内附教程分享)

Examples.png

这就是告诉怎么用。。。

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

Python 参数解析库 docopt 简单使用图文教程。(内附教程分享)

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,注意 带有()的是必须要选择的。

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

Python 参数解析库 docopt 简单使用图文教程。(内附教程分享)

执行之后.png

如果指令正确那么就能输出上面格式的内容了,这个是以一个字典的形式来输出的。后期可以根据字典里面的各个数据来分别处理各种情况了。

另外上面还提到了一个 ... 的问题 注意看看 上图中的 FILE 对应的是一个数组。所以 ... 的作用就是声明 [FILE] 是一个数组 所以 可以添加多个,输出的是数组。

后续:

1.只说明了基础的用法。

2.可能写的不是那么清晰。有不明白的可以留言。

3.点击这个是我自己写的 所有带 zhang 前缀的是我自己复写的,有对应的说明。

最后,想学习Python的小伙伴们!

请关注+私信回复:“学习”就可以拿到一份我为大家准备的Python学习资料!

Python 参数解析库 docopt 简单使用图文教程。(内附教程分享)

pytyhon学习资料

Python 参数解析库 docopt 简单使用图文教程。(内附教程分享)

python学习资料

相关推荐