Python 參數(shù)解析庫(kù) docopt 簡(jiǎn)單使用圖文教程。

Part 1 說(shuō)明:

0 嫌啰嗦的直接到 正式開始 的位置。
1 docopt 是一個(gè)參數(shù)解析的庫(kù)。所以這個(gè)算是一個(gè)小教程。如果沒有python基礎(chǔ),還是建 議先去學(xué)一下。
2 另外百度一下發(fā)現(xiàn)了 optparse 這個(gè)python 系統(tǒng)自帶的庫(kù)。簡(jiǎn)單的看了看。知乎上大神說(shuō) 珍愛生命 遠(yuǎn)離 optparse。下了我一跳。這里不代表我的觀點(diǎn)。畢竟自帶的,可以去看看比較一下。。。不過(guò)這不是本文的重點(diǎn)了。
3 百度了半天的docopt 教程只找到了這個(gè) 看了還是沒怎么懂。算了,還是自己搞一搞吧。

part 2 背景:

前幾天,看了一個(gè)教程。制作一個(gè)火車票查看器這個(gè)小功能作者寫得挺有思路確實(shí)寫得不錯(cuò),如果感興趣可以去看看這個(gè)文章。制作完這個(gè)小的工具以后就能用命令去查詢相應(yīng)的火車票情況。 so cool。

火車票查詢輸出結(jié)果.png

python學(xué)藝不精+_+,想探究一下命令是怎么一步步控制執(zhí)行代碼的。打開作者的文件里面發(fā)現(xiàn)了只是這個(gè)樣子。

火車票的py實(shí)現(xiàn).png

甚至都沒有看到怎么去寫出想要的規(guī)則??好吧,一開始我也是拒絕的。那么就去找一下源碼吧。這里的說(shuō)明也是最權(quán)威了,于是找到了這么一段話:

git截圖.png

大概意思是: 我擦,你還用原始的方式寫解析參數(shù)? 別傻了,你是不是想一邊寫注釋 一邊 順帶把解析規(guī)則也寫了,對(duì)!docopt就是要讓你這么吊~ (翻譯的不對(duì)?)

看了上面的這段話我也是深深的震精了? 什么? 注釋都能用在程序里面? 合理嗎? 于是自己還是去探究了一下如下函數(shù):

doc小demo.png

也就是說(shuō) 這個(gè)函數(shù)里面的注釋能通過(guò)一個(gè)doc 參數(shù)打印出來(lái),當(dāng)然要是這個(gè)是整個(gè)文檔的說(shuō)明,那么打印的就是文檔對(duì)應(yīng)的doc 這里就不測(cè)試了,下面的就是這樣的例子。docopt的作者也是真的吊吊吊。

好吧安裝 docopt 的方式 pip3 install docopt 。上面寫了那么多廢話。都懶得刪除了。。。

正式開始

docopt 用了一天了感覺完整的分析一個(gè)demo 就能說(shuō)明其中基本用法了。。


完整的demo.png

上圖是一個(gè)完整的demo

完整的demo.png

主函數(shù)就是調(diào)用罷了。沒什么好說(shuō)的

看上面分了4個(gè)部分 Usage Arguments Options Examples 各個(gè)分析一下:
Options:

Options.png

指令 zhangTestArgument.py -qvrh 123.txt 里面的參數(shù) 是 -qvrh 下面是對(duì)參數(shù)的說(shuō)明:
-h --help 這兩個(gè)沒什么卵區(qū)別,中間可以使 空格也可以是 逗號(hào)!如果是 長(zhǎng)指令 前面是用 -- (例如 --help)

options2.png

這種還是糾結(jié)了一下:
-q 其實(shí)代表的是 --quite Sel 那么當(dāng)我們執(zhí)行 zhangTestArgument.py -q [FILE] 這個(gè)指令的時(shí)候 實(shí)際上相當(dāng)于是 zhangTestArgument.py --quite Sel [FILE] 這樣就是兩個(gè)參數(shù)了~

Arguments:

Arguments.png

這里面是敘述的是上面的參數(shù) 后面跟著的是說(shuō)明了這個(gè)參數(shù)的作用。(筆者看了看這塊感覺除了說(shuō)明一些是做什么的,好像沒啥用了。)

Examples:

Examples.png

這就是告訴怎么用。。。

Usage:(Usage是聲明指令怎么使用的部分,必須要寫的,下面是重中之重)


Usage.png
  1. zhangTestArgument.py 這個(gè)部分是名字 如指令 python3 XXXX -vf file.txt 其中的 XXXX 就是這
  2. [-vqrh] 這個(gè)是參數(shù)位置 這里面的參數(shù)必須要在下面的 options 選項(xiàng)中聲明. 這里面添加了 [] 這個(gè)是因?yàn)?這些參數(shù)是可選的,要是直接寫成 -v 這樣那么想執(zhí)行這條指令必須寫-v。其實(shí)可以寫成 [-v][-q][-r][-h],這樣也行,但是怪怪的。另外 如果參數(shù)是長(zhǎng)參數(shù) 那么不能直接簡(jiǎn)寫成 -vqrh 的形式 只能是 --help --file --nimei 這種形式。
  3. [FILE] 這個(gè)是參數(shù) 加上[]作用同上。這個(gè)就像是 定義了一個(gè) str變量一樣。 可以給str 賦值 后期可以取出來(lái)。
  4. 注意到 ... 了嗎? 這個(gè)的作用是讓前面一個(gè)參數(shù)重復(fù)多次,最后以數(shù)組輸出。沒看懂沒關(guān)系一會(huì)看看最后的輸出就懂了。
  5. (-left | -right) 這個(gè)()的作用是說(shuō)這里面必須要選擇一個(gè) 要么是 --right 要么是 --left,注意 帶有()的是必須要選擇的。

好了,現(xiàn)在按照上面的弄應(yīng)該是能寫出想要的指令了,然后去終端找到對(duì)應(yīng)的文件之后執(zhí)行一下指令吧。

執(zhí)行之后.png

如果指令正確那么就能輸出上面格式的內(nèi)容了,這個(gè)是以一個(gè)字典的形式來(lái)輸出的。后期可以根據(jù)字典里面的各個(gè)數(shù)據(jù)來(lái)分別處理各種情況了。
另外上面還提到了一個(gè) ... 的問(wèn)題 注意看看 上圖中的 FILE 對(duì)應(yīng)的是一個(gè)數(shù)組。所以 ... 的作用就是聲明 [FILE] 是一個(gè)數(shù)組 所以 可以添加多個(gè),輸出的是數(shù)組。

后續(xù):
1.只說(shuō)明了基礎(chǔ)的用法。
2.可能寫的不是那么清晰。有不明白的可以留言。
3.點(diǎn)擊這個(gè)是我自己寫的 所有帶 zhang 前綴的是我自己復(fù)寫的,有對(duì)應(yīng)的說(shuō)明。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容