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

Part 1 說明:

0 嫌啰嗦的直接到 正式開始 的位置。
1 docopt 是一個(gè)參數(shù)解析的庫。所以這個(gè)算是一個(gè)小教程。如果沒有python基礎(chǔ),還是建 議先去學(xué)一下。
2 另外百度一下發(fā)現(xiàn)了 optparse 這個(gè)python 系統(tǒng)自帶的庫。簡單的看了看。知乎上大神說 珍愛生命 遠(yuǎn)離 optparse。下了我一跳。這里不代表我的觀點(diǎn)。畢竟自帶的,可以去看看比較一下。。。不過這不是本文的重點(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ī)則??好吧,一開始我也是拒絕的。那么就去找一下源碼吧。這里的說明也是最權(quán)威了,于是找到了這么一段話:

git截圖.png

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

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

doc小demo.png

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

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

正式開始

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


完整的demo.png

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

完整的demo.png

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

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

Options.png

指令 zhangTestArgument.py -qvrh 123.txt 里面的參數(shù) 是 -qvrh 下面是對(duì)參數(shù)的說明:
-h --help 這兩個(gè)沒什么卵區(qū)別,中間可以使 空格也可以是 逗號(hào)!如果是 長指令 前面是用 -- (例如 --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ù) 后面跟著的是說明了這個(gè)參數(shù)的作用。(筆者看了看這塊感覺除了說明一些是做什么的,好像沒啥用了。)

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ù)是長參數(shù) 那么不能直接簡寫成 -vqrh 的形式 只能是 --help --file --nimei 這種形式。
  3. [FILE] 這個(gè)是參數(shù) 加上[]作用同上。這個(gè)就像是 定義了一個(gè) str變量一樣。 可以給str 賦值 后期可以取出來。
  4. 注意到 ... 了嗎? 這個(gè)的作用是讓前面一個(gè)參數(shù)重復(fù)多次,最后以數(shù)組輸出。沒看懂沒關(guān)系一會(huì)看看最后的輸出就懂了。
  5. (-left | -right) 這個(gè)()的作用是說這里面必須要選擇一個(gè) 要么是 --right 要么是 --left,注意 帶有()的是必須要選擇的。

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

執(zhí)行之后.png

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

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,908評(píng)論 6 541
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,324評(píng)論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,018評(píng)論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,675評(píng)論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,417評(píng)論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,783評(píng)論 1 329
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,779評(píng)論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,960評(píng)論 0 290
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,522評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,267評(píng)論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,471評(píng)論 1 374
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,009評(píng)論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,698評(píng)論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,099評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,386評(píng)論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,204評(píng)論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,436評(píng)論 2 378

推薦閱讀更多精彩內(nèi)容