美文网首页PythonPython程序员
Python 参数解析库 docopt 简单使用图文教程。

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

作者: 韩大熊宝要姓张 | 来源:发表于2016-08-02 16:16 被阅读5750次

    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://github.com/protream/tickets 这是火车票的源码。 其他的源码在https://github.com/qiang437587687/pythonBrother/tree/master/docopt-master-zhangTest/examples
      • 于阗:还是不是很懂耶
        韩大熊宝要姓张:原来用的时候是在3.5上弄的,另外我用的是mac.
        旧城城旧:你是在Python2的环境是弄的是么?我在linux Python3.5 或者笔记本windows python3.6上面都不行。都快被整疯了。
        韩大熊宝要姓张:我其实也是在慢慢摸索,多写一写就能慢慢明白了。

      本文标题:Python 参数解析库 docopt 简单使用图文教程。

      本文链接:https://www.haomeiwen.com/subject/nyifsttx.html