python docopt模塊詳解


python docopt模塊詳解

docopt 本質上是在 Python 中引入了一種針對命令行參數的形式語言,在代碼的最開頭使用 """ """文檔注釋的形式寫出符合要求的文檔,就會自動生成對應的parse

用法:
docopt的使用非常簡單,以Qingchat為例,你只需要在代碼最開頭加入:

"""Qingchat CLI

Usage:
qingchat config ip <ip>
qingchat config port <port>
qingchat config login
qingchat group list
qingchat group choose <group_name>...
qingchat group clean
qingchat group send -t <content>
qingchat group send -i <media>
qingchat group send -f <file> [<delaytime>]

Options:
-h --help Show this screen.
-v --version Show version.
"""

  

然后在執行代碼中加入:

arguments = docopt(__doc__,version="Qingchat 0.3.2")

  

然后就會在程序中導入一個arguments字典,這個字典的內容為:

{
'-f': False,
'-i': False,
'-t': False,
'<content>': None,
'<file>': None,
'<group_name>': [],
'<ip>': '127.0.0.1',
'<media>': None,
'<port>': None,
'choose': False,
'clean': False,
'config': True,
'group': False,
'ip': True,
'list': False,
'login': False,
'port': False,
'send': False
}

  

下面我們來詳細介紹一下如何完成一個符合 docopt 要求的注釋文檔:

Usage

所有出現在Usage:(區分大小寫)和一個空行之間的文本都會被識別為一個命令組合, Usage 后的第一個字母將會被識別為這個程序的名字,所有命令組合的每一個部分(空格分隔)都會成為字典中的一個key
參數
形如<argument> 或者 ARGUMENT的文本將會被識別為參數
在轉化后的字典中的取值為True 或者False.

Usage:my_program <host> <port>

  

選項
形如-o 或者 --option 的文本將會被識別為選項
在轉換后的字典中的取值為True或False

Usage:my_program -f <file>

  

Tips:
1. 短選項可以組合起來,比如 -abc 等價於 -a -b -c
2. 長選項需要的參數需要使用 = 或者空格來分隔, --input=ARG 等價於 --input ARG
3. 短選項可以不需要空格, -f FILE 等價於 -fFILE

命令
不滿足 --options 或者 <arguments> 的文本將會被識別為(子)命令
在轉化后的字典中取值為 True 或者 False

可選項
形如 [optional elements]的文本是可選項
elements包括上述的三種類型:參數,選項以及命令
在相同或者不同的括號中都是一樣的:

Usage:my_program[command --option <argument>]

  


等價於

Usage:my_program[command][--option][<argument>]

  



必選項
形如(required elements)的文本是必選項
上述三種元素默認都是必填項, () 符號用在一些比較特殊的情形下,比如:

Usage:my_program(--either-this<and-that>|<or-this>)

  

選擇項
形如element|another 的文本是選擇項,可以從中選擇一個值

Usage:my_program go (--up|--down|--left|--right)

  



列表項
形如element...的文本是列表項,可以輸入多個參數
比如:

Usage:my_program open <file>...

然后可以通過 arguments['<file>']來訪問這個列表

Option
option 部分用於指定某些特殊情形,例如:
1. 將某個短參數與長參數關聯起來,比如 -i <file>, --input <file>
2. 某個選項有一個參數
3. 選項的默認值,比如 --coefficient=K The K coefficient [default: 2.95]

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM