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

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 前缀的是我自己复写的,有对应的说明。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,830评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,992评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,875评论 0 331
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,837评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,734评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,091评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,550评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,217评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,368评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,298评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,350评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,027评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,623评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,706评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,940评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,349评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,936评论 2 341

推荐阅读更多精彩内容