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ī)則也寫了绎秒,對浦妄!docopt就是要讓你這么吊~ (翻譯的不對?)

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

doc小demo.png

也就是說 這個(gè)函數(shù)里面的注釋能通過一個(gè)doc 參數(shù)打印出來,當(dāng)然要是這個(gè)是整個(gè)文檔的說明惠赫,那么打印的就是文檔對應(yīng)的doc 這里就不測試了把鉴,下面的就是這樣的例子。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 下面是對參數(shù)的說明:
-h --help 這兩個(gè)沒什么卵區(qū)別吏颖,中間可以使 空格也可以是 逗號搔体!如果是 長指令 前面是用 -- (例如 --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)系一會看看最后的輸出就懂了峻呛。
  5. (-left | -right) 這個(gè)()的作用是說這里面必須要選擇一個(gè) 要么是 --right 要么是 --left罗售,注意 帶有()的是必須要選擇的。

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

執(zhí)行之后.png

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

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市耿焊,隨后出現(xiàn)的幾起案子邢锯,更是在濱河造成了極大的恐慌,老刑警劉巖搀别,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件丹擎,死亡現(xiàn)場離奇詭異,居然都是意外死亡歇父,警方通過查閱死者的電腦和手機(jī)蒂培,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來榜苫,“玉大人护戳,你說我怎么就攤上這事〈共牵” “怎么了媳荒?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵抗悍,是天一觀的道長。 經(jīng)常有香客問我钳枕,道長缴渊,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任鱼炒,我火速辦了婚禮衔沼,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘昔瞧。我一直安慰自己指蚁,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布自晰。 她就那樣靜靜地躺著凝化,像睡著了一般。 火紅的嫁衣襯著肌膚如雪酬荞。 梳的紋絲不亂的頭發(fā)上搓劫,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天,我揣著相機(jī)與錄音袜蚕,去河邊找鬼。 笑死绢涡,一個(gè)胖子當(dāng)著我的面吹牛牲剃,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播雄可,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼凿傅,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了数苫?” 一聲冷哼從身側(cè)響起聪舒,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎虐急,沒想到半個(gè)月后箱残,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡止吁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年被辑,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片敬惦。...
    茶點(diǎn)故事閱讀 38,716評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡盼理,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出俄删,到底是詐尸還是另有隱情宏怔,我是刑警寧澤奏路,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站臊诊,受9級特大地震影響鸽粉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜妨猩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一潜叛、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧壶硅,春花似錦威兜、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至约谈,卻和暖如春笔宿,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背棱诱。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工泼橘, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人迈勋。 一個(gè)月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓炬灭,卻偏偏與公主長得像,于是被迫代替她去往敵國和親靡菇。 傳聞我的和親對象是個(gè)殘疾皇子重归,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評論 2 350

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