最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python中的命令行參數(shù)解析工具之docopt詳解

 更新時間:2017年03月27日 10:58:12   作者:Glumes  
docopt 是一個用來解析命令行參數(shù)的工具,當(dāng)想要在 Python 程序后面附加參數(shù)時,就不需要再為此而發(fā)愁了。下面這篇文章主要介紹了Python中命令行參數(shù)解析工具之docopt的相關(guān)資料,介紹的非常詳細,需要的朋友們下面來一起看看吧。

前言

docopt 是一個開源的庫,代碼地址:https://github.com/docopt/docopt。它在 README 中就已經(jīng)做了詳細的介紹,并且還附帶了很多例子可供學(xué)習(xí),這篇文章也是翻譯一下 README 中內(nèi)容……

docopt 最大的特點在于不用考慮如何解析命令行參數(shù),而是當(dāng)你把心中想要的格式按照一定的規(guī)則寫出來后,解析也就完成了。

docopt的安裝

docopt有很多種版本,分別支持不同的語言,最簡答的docopt支持python腳本,docopt.java支持java腳本,docopts則是支持shell腳本的(下面的例子主要以docopts為例),具體的可以參見github的docopt說明

安裝docopt

以mac os x為例安裝,安裝docopts前首先需要安裝docopt,有兩種安裝方法

方法一

比較簡單的方法是直接用 pip 安裝, pip install docopt==0.6.2

有些mac可能不支持直接pip 指令,需要先安裝pip

方法二

也可以在github上下載源碼(docopt是開源項目),然后通過python setup.py install 安裝

安裝docopts

安裝docopts就必須使用上面安裝docopt的方法二,在GitHub上下載源碼,然后 使用python安裝,下載地址

docopt 的實現(xiàn)簡單分析

在 Python 中有這么一個屬性 __doc__ ,它的值是字符串,一般表示幫助信息,而 docopt 正是利用了這一屬性,把幫助信息替換成命令行參數(shù)解析說明,再對它進行解析即可。

舉個 docopt 中的例子來說明:

"""Naval Fate.
Usage:
 naval_fate.py ship new <name>...
 naval_fate.py ship <name> move <x> <y> [--speed=<kn>]
 naval_fate.py ship shoot <x> <y>
 naval_fate.py mine (set|remove) <x> <y> [--moored | --drifting]
 naval_fate.py (-h | --help)
 naval_fate.py --version
Options:
 -h --help  Show this screen.
 --version  Show version.
 --speed=<kn> Speed in knots [default: 10].
 --moored  Moored (anchored) mine.
 --drifting Drifting mine.
"""
from docopt import docopt
if __name__ == '__main__':
 arguments = docopt(__doc__, version='Naval Fate 2.0')
 print(arguments)

上述代碼段中,很大一段幫助信息就是我們的命令行參數(shù)解析說明,在函數(shù)入口處調(diào)用docopt函數(shù)進行解析,返回的arguments變量是一個字典型變量,它記錄了選項是否被選用了,參數(shù)的值是什么等信息,當(dāng)程序從命令行運行時,我們就是根據(jù)arguments變量的記錄來得知用戶輸入的選項和參數(shù)信息。

所以如何寫好命令行參數(shù)解析說明就變得至關(guān)重要了,命令行解析信息包含兩部分,分別是使用模式格式和選項描述格式。

使用模式格式(Usage pattern format)

使用模式以usage:開始,以空行結(jié)束,如上代碼段所示,它主要描述了用戶添加命令行參數(shù)時的格式,也就是使用時的格式,解析也是按照此格式來進行的。

每一個使用模式都包含如下元素:

* 參數(shù)

參數(shù)使用大寫字母或者使用尖括號<>圍起來。

* 選項

選項以短橫線開始-或者--。只有一個字母時格式-o,多于一個字母時--output。同時還可以把多個單字母的選項合并,-ovi等同于-o、-v、-i。選項也能有參數(shù),此時別忘了給選項添加描述說明。

接下來是使用模式中用到的一些標(biāo)識的含義,正確地使用他們能夠更好的完成解析任務(wù):

* []

代表可選的元素,方括號內(nèi)的元素可有可無

* ()

代表必須要有的元素,括號內(nèi)的元素必須要有,哪怕是多個里面選一個。

* |

互斥的元素,豎線兩旁的元素只能有一個留下

* ...

代表元素可以重復(fù)出現(xiàn),最后解析的結(jié)果是一個列表

* [options]

指定特定的選項,完成特定的任務(wù)。

選項描述格式(Option description format)

選項描述同樣必不可少,尤其是當(dāng)選項有參數(shù),并且還需要為它賦默認值時。

為選項添加參數(shù)的格式有兩種:

-o FILE --output-FILE  # 不使用逗號,使用 = 符號
-i <file>, --input <file> # 使用逗號,不使用 = 符號

為選項添加描述說明,只需要用兩個空格分隔選項和說明即可。

為選項添加默認值時,把它添加到選擇描述后面即可,格式如下[default: <my-default-value>]

--coefficient=K The K coefficient [default: 2.95]
--output=FILE Output file [default: test.txt]
--directory=DIR Some directory [default: ./]

如果選項是可以重復(fù)的,那么它的值[default: ...]將會一個 list列表,若不可以重復(fù),則它的值是一個字符串。

使用

理解了 使用模式格式 和 選項描述格式 之后,再配合給出的例子就能較好的理解了。

接下來就是得到輸入的信息了。

在前面提到arguments參數(shù)是一個字典類型,包含了用戶輸入的選項和參數(shù)信息,還是上面的代碼段例子,假如我們從命令行運行的輸入是

python3 test.py ship Guardian move 100 150 --speed=15

那么打印arguments參數(shù)如下:

{'--drifting': False,
 '--help': False,
 '--moored': False,
 '--speed': '15',
 '--version': False,
 '<name>': ['Guardian'],
 '<x>': '100',
 '<y>': '150',
 'mine': False,
 'move': True,
 'new': False,
 'remove': False,
 'set': False,
 'ship': True,
 'shoot': False}

從打印信息可以看到,對于選項,使用布爾型來表示用戶是否輸入了該選項,對于參數(shù),則使用具體值來表述。

這樣一來,程序就可以從arguments變量中得到下一步的操作了。若是用戶什么參數(shù)都沒輸入,則打印Usage說明提示輸入內(nèi)容。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

相關(guān)文章

  • Python實現(xiàn)vlog生成器的示例代碼

    Python實現(xiàn)vlog生成器的示例代碼

    vlog,全稱為Video?blog,意為影音博客,也有翻譯為微錄。本文將嘗試用Python基于Moviepy從一個文本文件中自動生成一個視頻格式的vlog,感興趣的可以了解一下
    2023-01-01
  • python重試裝飾器示例

    python重試裝飾器示例

    python 寫一些網(wǎng)絡(luò)服務(wù)的時候總會拋出一些異常,當(dāng)前任務(wù)就被終止了,利用@裝飾器,寫一個重試的裝飾器,下面是實現(xiàn)示例,需要的朋友可以參考下
    2014-02-02
  • Flask項目搭建及部署(最全教程)

    Flask項目搭建及部署(最全教程)

    本文主要介紹了Flask項目搭建及部署,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • django 外鍵創(chuàng)建注意事項說明

    django 外鍵創(chuàng)建注意事項說明

    這篇文章主要介紹了django 外鍵創(chuàng)建注意事項說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • 基于Python繪制一個摸魚倒計時界面

    基于Python繪制一個摸魚倒計時界面

    前端時間推出了一個摸魚APP,這篇文章將為大家介紹基于Python繪制一個摸魚倒計時界面,文中的示例代碼講解詳細,感興趣的可以學(xué)習(xí)一下
    2021-12-12
  • 用Python搶過年的火車票附源碼

    用Python搶過年的火車票附源碼

    離過年時間也不久了,還是預(yù)訂春節(jié)火車票了,現(xiàn)在有好多平臺都可以幫助大家搶購火車,下面小編給大家介紹用python搶過年的火車票附源碼,對pthon搶火車票相關(guān)知識感興趣的朋友一起學(xué)習(xí)吧
    2015-12-12
  • Python中多線程的創(chuàng)建及基本調(diào)用方法

    Python中多線程的創(chuàng)建及基本調(diào)用方法

    由于注明的GIL的存在,Python盡管能創(chuàng)建多個線程,但是多線程卻不能同時工作...well,這里我們來看一下Python中多線程的創(chuàng)建及基本調(diào)用方法
    2016-07-07
  • Python中struct模塊對字節(jié)流/二進制流的操作教程

    Python中struct模塊對字節(jié)流/二進制流的操作教程

    最近在學(xué)習(xí)python網(wǎng)絡(luò)編程這一塊,在寫簡單的socket通信代碼時,遇到了struct這個模塊的使用,當(dāng)時不太清楚這到底有和作用,后來查閱了相關(guān)資料大概了解了,這篇文章就主要介紹了Python中struct模塊對字節(jié)流/二進制流的操作,需要的朋友可以參考借鑒。
    2017-01-01
  • 簡單了解django索引的相關(guān)知識

    簡單了解django索引的相關(guān)知識

    這篇文章主要介紹了簡單了解django索引的相關(guān)知識,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-07-07
  • python docx如何修改word表格內(nèi)容

    python docx如何修改word表格內(nèi)容

    使用Python-docx庫,可以方便地修改Word文檔中的表格內(nèi)容,首先需要安裝python-docx庫,然后使用該庫打開Word文檔,遍歷文檔中的表格并修改指定單元格內(nèi)容,最后另存為新文檔
    2024-09-09

最新評論

会东县| 安西县| 昭觉县| 龙门县| 永吉县| 页游| SHOW| 葫芦岛市| 报价| 武胜县| 奉新县| 贺州市| 奈曼旗| 宿迁市| 邵阳市| 德令哈市| 枞阳县| 武鸣县| 文化| 平度市| 兰西县| 遂溪县| 遵义县| 黔西| 双辽市| 大埔区| 库伦旗| 阿巴嘎旗| 长子县| 西贡区| 繁峙县| 天全县| 龙口市| 朝阳区| 毕节市| 龙门县| 东丰县| 射洪县| 盘山县| 恩施市| 汾阳市|