首頁 後端開發 Python教學 使用Python中的命令列參數解析工具之docopt詳細介紹

使用Python中的命令列參數解析工具之docopt詳細介紹

Mar 28, 2017 am 09:22 AM
docopt python

docopt 是用來解析命令列參數的工具,當想要在 Python 程式後面附加參數時,就不需要再為此而發愁了。以下這篇文章主要介紹了Python中命令列參數解析工具之docopt的相關資料,介紹的非常詳細,需要的朋友們下面來一起看看吧。

前言

docopt 是一個開源的函式庫。它在README 中就已經做了詳細的介紹,並且還附帶了很多例子可供學習,這篇文章也是翻譯一下README 中內容……

docopt 最大的特點在於不用考慮如何解析命令行參數,而是當你把心中想要的格式依照一定的規則寫出來後,解析就完成了。

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 的實作簡單分析在Python 中有這麼一個屬性

__doc__

,它的值是字串,一般表示幫助訊息,而docopt 正是利用了這個屬性,把幫助資訊替換成命令列參數解析說明,再對它進行解析即可。

舉個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__ == &#39;__main__&#39;:
 arguments = docopt(__doc__, version=&#39;Naval Fate 2.0&#39;)
 print(arguments)
登入後複製

上述程式碼片段中,很大一段幫助資訊就是我們的命令列參數解析說明,在函數入口處調用docopt函數進行解析,返回的arguments變量是一個字典型變量,它記錄了選項是否被選用了,參數的值是什麼等信息,當程序從命令行運行時,我們就是根據arguments變數的記錄來得知使用者輸入的選項和參數資訊。

所以如何寫好命令列參數解析說明就變得至關重要了,命令列解析資訊包含兩個部分,分別是使用模式格式和選項描述格式。

使用模式格式(Usage pattern format)#使用模式以usage:開始,以空白行結束,如上程式碼片段所示,它主要描述了使用者新增命令列參數時的格式,也就是使用時的格式,解析也是按照此格式來進行的。

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


* 參數


參數使用大寫字母或使用尖括號<>圍起來。


* 選項


選項以短橫線開始-或--。只有一個字母時格式-o,多於一個字母時--output。同時還可以把多個單字母的選項合併,-ovi等同於-o、-v、-i。選項也能有參數,此時別忘了為選項新增描述說明。

接下來是使用模式中用到的一些標識的意義,正確地使用他們能夠更好的完成解析任務:

##* []

代表可選的元素,方括號內的元素可有可無

* ()

代表必須要有的元素,括號內的元素一定要有,哪怕是多個裡面選一個。

* |

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

* ...

代表元素可以重複出現,最後解析的結果是一個清單

* [options]

指定特定的選項,完成特定的任務。

選項描述格式(Option description format)

#選項描述同樣必不可少,尤其是當選項有參數,並且還需要為它賦默認值時。

為選項新增參數的格式有兩種:

-o FILE --output-FILE  # 不使用逗号,使用 = 符号
-i <file>, --input <file> # 使用逗号,不使用 = 符号
登入後複製

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

為選項新增預設值時,把它加到選擇描述後面即可,格式如下[default: ]

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

如果選項是可以重複的,那麼它的值
[default: ...]

將會一個list列表,若不可以重複,則它的值是一個字串。

使用

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

接下來就是得到輸入的資訊了。

在前面提到arguments参数是一个字典类型,包含了用户输入的选项和参数信息,还是上面的代码段例子,假如我们从命令行运行的输入是


python3 test.py ship Guardian move 100 150 --speed=15
登入後複製

那么打印arguments参数如下:


{&#39;--drifting&#39;: False,
 &#39;--help&#39;: False,
 &#39;--moored&#39;: False,
 &#39;--speed&#39;: &#39;15&#39;,
 &#39;--version&#39;: False,
 &#39;<name>&#39;: [&#39;Guardian&#39;],
 &#39;<x>&#39;: &#39;100&#39;,
 &#39;<y>&#39;: &#39;150&#39;,
 &#39;mine&#39;: False,
 &#39;move&#39;: True,
 &#39;new&#39;: False,
 &#39;remove&#39;: False,
 &#39;set&#39;: False,
 &#39;ship&#39;: True,
 &#39;shoot&#39;: False}
登入後複製

从打印信息可以看到,对于选项,使用布尔型来表示用户是否输入了该选项,对于参数,则使用具体值来表述。

这样一来,程序就可以从arguments变量中得到下一步的操作了。若是用户什么参数都没输入,则打印Usage说明提示输入内容。

以上是使用Python中的命令列參數解析工具之docopt詳細介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

PHP和Python:解釋了不同的範例 PHP和Python:解釋了不同的範例 Apr 18, 2025 am 12:26 AM

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

在PHP和Python之間進行選擇:指南 在PHP和Python之間進行選擇:指南 Apr 18, 2025 am 12:24 AM

PHP適合網頁開發和快速原型開發,Python適用於數據科學和機器學習。 1.PHP用於動態網頁開發,語法簡單,適合快速開發。 2.Python語法簡潔,適用於多領域,庫生態系統強大。

Python vs. JavaScript:學習曲線和易用性 Python vs. JavaScript:學習曲線和易用性 Apr 16, 2025 am 12:12 AM

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

PHP和Python:深入了解他們的歷史 PHP和Python:深入了解他們的歷史 Apr 18, 2025 am 12:25 AM

PHP起源於1994年,由RasmusLerdorf開發,最初用於跟踪網站訪問者,逐漸演變為服務器端腳本語言,廣泛應用於網頁開發。 Python由GuidovanRossum於1980年代末開發,1991年首次發布,強調代碼可讀性和簡潔性,適用於科學計算、數據分析等領域。

vs code 可以在 Windows 8 中運行嗎 vs code 可以在 Windows 8 中運行嗎 Apr 15, 2025 pm 07:24 PM

VS Code可以在Windows 8上運行,但體驗可能不佳。首先確保系統已更新到最新補丁,然後下載與系統架構匹配的VS Code安裝包,按照提示安裝。安裝後,注意某些擴展程序可能與Windows 8不兼容,需要尋找替代擴展或在虛擬機中使用更新的Windows系統。安裝必要的擴展,檢查是否正常工作。儘管VS Code在Windows 8上可行,但建議升級到更新的Windows系統以獲得更好的開發體驗和安全保障。

visual studio code 可以用於 python 嗎 visual studio code 可以用於 python 嗎 Apr 15, 2025 pm 08:18 PM

VS Code 可用於編寫 Python,並提供許多功能,使其成為開發 Python 應用程序的理想工具。它允許用戶:安裝 Python 擴展,以獲得代碼補全、語法高亮和調試等功能。使用調試器逐步跟踪代碼,查找和修復錯誤。集成 Git,進行版本控制。使用代碼格式化工具,保持代碼一致性。使用 Linting 工具,提前發現潛在問題。

notepad 怎麼運行python notepad 怎麼運行python Apr 16, 2025 pm 07:33 PM

在 Notepad 中運行 Python 代碼需要安裝 Python 可執行文件和 NppExec 插件。安裝 Python 並為其添加 PATH 後,在 NppExec 插件中配置命令為“python”、參數為“{CURRENT_DIRECTORY}{FILE_NAME}”,即可在 Notepad 中通過快捷鍵“F6”運行 Python 代碼。

vscode 擴展是否是惡意的 vscode 擴展是否是惡意的 Apr 15, 2025 pm 07:57 PM

VS Code 擴展存在惡意風險,例如隱藏惡意代碼、利用漏洞、偽裝成合法擴展。識別惡意擴展的方法包括:檢查發布者、閱讀評論、檢查代碼、謹慎安裝。安全措施還包括:安全意識、良好習慣、定期更新和殺毒軟件。

See all articles