欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python命令行參數(shù)解析工具 docopt 安裝和應(yīng)用過(guò)程詳解

 更新時(shí)間:2019年09月26日 09:25:38   作者:海納百川_有容乃大  
這篇文章主要介紹了Python命令行參數(shù)解析工具 docopt 安裝和應(yīng)用過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

什么是 docopt?

1、docopt 是一種 Python 編寫(xiě)的命令行執(zhí)行腳本的交互語(yǔ)言。

它是一種語(yǔ)言!

它是一種語(yǔ)言!

它是一種語(yǔ)言!

2、使用這種語(yǔ)言可以在自己的腳本中,添加一些規(guī)則限制。這樣腳本在執(zhí)行的時(shí)候就必須按照這樣格式來(lái)執(zhí)行,同時(shí),也可以很方便的編寫(xiě)一些幫助信息(其實(shí)很多軟件在輸入 -h 的時(shí)候顯示信息 、例如 python -h ,會(huì)顯示所有的 python 指令,并且頁(yè)通過(guò) docopt 限制了 python 指令的格式),下面是一些簡(jiǎn)單的例子:

docopt 的安裝

docopt 有很多把版本,分別支持不同的語(yǔ)言,最簡(jiǎn)單就是支持 python 語(yǔ)言,docopt.java 支持 java腳本,docopts 則是支持 shell 腳本的(下面的例子主要事以 docopts 為例)

1、安裝 docopt

方法一:      

pip install docopt

方法二:

也可以在 github 上下載源碼(docopt 是開(kāi)源項(xiàng)目),然后通過(guò) Python setup.py install 安裝

2、安裝 docopts 就必須使用上面的安裝docopt 的方法二來(lái)進(jìn)行安裝,然后使用 python 安裝,下載地址:

https://github.com/docopt/docopts

docopt 實(shí)現(xiàn)簡(jiǎn)單分析

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

舉個(gè)例子:  

"""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ù)解析說(shuō)明,在函數(shù)入口調(diào)用了 docopt 函數(shù)進(jìn)行解析,返回的 arguments 變量是一個(gè)字典變量,它記錄了選項(xiàng)是否被選用了,參數(shù)的值是什么等信息,當(dāng)程序從命令行運(yùn)行時(shí),我們就是根據(jù) arguments 變量的記錄來(lái)得知用戶輸入的選項(xiàng)和參數(shù)信息。

所以如何寫(xiě)好命令行參數(shù)解析說(shuō)明就很重要了,命令行解析信息包含兩部部分,分別是使用模式格式和選項(xiàng)描述格式。

使用模式格式(Usage pattern format)

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

每一個(gè)使用模式都包含以下元素:

* 參數(shù)

參數(shù)使用大寫(xiě)字母或者使用尖括號(hào)<> 圍起來(lái)

* 選項(xiàng)

選項(xiàng)以短橫線開(kāi)始 或者 --,只有一個(gè)字母時(shí)格式 -o,多于一個(gè)字母時(shí) --output ,同時(shí)還可以把多個(gè)單字母的選選項(xiàng)合并, -ov 等同于 -o, -v, -i.。選項(xiàng)也能 

參數(shù),此時(shí)別忘了給選項(xiàng)添加描述說(shuō)明

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

* []

代表可選的元素,方括號(hào)中的元素可有可無(wú)

*()

代表必要有的元素,括號(hào)內(nèi)的元素必須要有,哪怕時(shí)多個(gè)里面選一個(gè)

*|

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

* ....

代表元素可以重復(fù)出現(xiàn),最后解釋的結(jié)果時(shí)一個(gè)列表

*[options]

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

選項(xiàng)描述格式(Options description format)

選項(xiàng)描述同樣必不可少,尤其時(shí)方選項(xiàng)有參數(shù),并且還需要為它賦默認(rèn)值時(shí)。

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

  • -o FILE --output -FILE # 不是用逗號(hào), 使用 = 符號(hào)
  • -i <file>, --input <file> # 使用逗號(hào), 不使用 = 符號(hào)

為選項(xiàng)添加描述說(shuō)明,只需要用兩個(gè)空格分割選項(xiàng)和說(shuō)明即可

為選項(xiàng)添加默認(rèn)值時(shí),把它添加到選擇描述后面即可,格式如下【defailt: <my-default-value>】  

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

如果選項(xiàng)時(shí)可以重復(fù)的,那么它的值 [default: ...] 將會(huì)是一個(gè)列表,若不可以重復(fù),則它的值時(shí)一個(gè)字符串。

使用

理解了使用模式格式 和 選項(xiàng)描述格式之后,在配合給出的例子就能較好的理解了;

接下來(lái)就是得到輸入信息了

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

python 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}

從打印的信息可以到,對(duì)于選項(xiàng),使布爾類型來(lái)標(biāo)識(shí)是否輸入了該選項(xiàng),則使用具體值來(lái)表述。

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

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python中的iterator和"lazy?iterator"區(qū)別介紹

    python中的iterator和"lazy?iterator"區(qū)別介紹

    這篇文章主要介紹了python中的iterator和?“l(fā)azy?iterator“之間有什么區(qū)別,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-04-04
  • Python全角與半角之間相互轉(zhuǎn)換的方法總結(jié)

    Python全角與半角之間相互轉(zhuǎn)換的方法總結(jié)

    全角與半角轉(zhuǎn)換在處理漢語(yǔ)語(yǔ)料中會(huì)經(jīng)常出現(xiàn),這里分別說(shuō)明漢字、數(shù)字、字母的unicode編碼范圍,下面這篇文章主要給大家介紹了關(guān)于Python全角與半角之間相互轉(zhuǎn)換的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • python中pandas操作apply返回多列的實(shí)現(xiàn)

    python中pandas操作apply返回多列的實(shí)現(xiàn)

    本文主要介紹了python中pandas操作apply返回多列的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • Python機(jī)器學(xué)習(xí)之scikit-learn庫(kù)中KNN算法的封裝與使用方法

    Python機(jī)器學(xué)習(xí)之scikit-learn庫(kù)中KNN算法的封裝與使用方法

    這篇文章主要介紹了Python機(jī)器學(xué)習(xí)之scikit-learn庫(kù)中KNN算法的封裝與使用方法,結(jié)合實(shí)例形式分析了scikit-learn庫(kù)中KNN算法的相關(guān)調(diào)用與使用技巧,需要的朋友可以參考下
    2018-12-12
  • Python+Opencv實(shí)現(xiàn)數(shù)字識(shí)別的示例代碼

    Python+Opencv實(shí)現(xiàn)數(shù)字識(shí)別的示例代碼

    這篇文章主要介紹了Python+Opencv實(shí)現(xiàn)數(shù)字識(shí)別的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Python3.6簡(jiǎn)單反射操作示例

    Python3.6簡(jiǎn)單反射操作示例

    這篇文章主要介紹了Python3.6簡(jiǎn)單反射操作,結(jié)合實(shí)例形式分析了Python3反射的概念、原理、相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下
    2018-06-06
  • python字符串中的單雙引

    python字符串中的單雙引

    下面小編就為大家?guī)?lái)一篇python字符串中的單雙引。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-02-02
  • 一文帶你了解Python中的字符串是什么

    一文帶你了解Python中的字符串是什么

    通過(guò)本文帶你了解Python中的字符串是什么,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-11-11
  • Python中pywifi模塊的基本用法講解

    Python中pywifi模塊的基本用法講解

    跨平臺(tái)的pywifi模塊支持操作無(wú)線網(wǎng)卡,該模塊易于使用,同時(shí)支持Windows、Linux等多個(gè)系統(tǒng),這篇文章主要介紹了Python中pywifi模塊的基本用法,需要的朋友可以參考下
    2022-11-11
  • Flask WTForms 表單插件的使用

    Flask WTForms 表單插件的使用

    本文主要介紹了Flask WTForms表單插件的使用,Python的WTForms庫(kù)通過(guò)提供表單的結(jié)構(gòu)、驗(yàn)證和渲染等功能,簡(jiǎn)化了表單的處理流程,感興趣的可以了解一下
    2023-11-11

最新評(píng)論