日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

docopt——好用的Python命令行参数解释器

發布時間:2024/1/1 python 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 docopt——好用的Python命令行参数解释器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Qingchat?使用的命令行參數解釋器是?docopt?,用下來感覺非常棒,所以決定介紹一下這個庫。(?奉勸各位看官,真愛生命,遠離argparse。?)

介紹

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
}

這樣應該就能很容易看出來,我們在文檔中寫的每一個短語,都被轉化為一個對應的類型。只要直接調用?arguments['xxx']?就可以判斷或者使用對應的值,從而實現對應的功能。

詳解

前面我們舉了一個例子,下面我們來詳細介紹一下如何完成一個符合?docopt?要求的注釋文檔。

Usage

所有出現在?usage:?(區分大小寫)和一個空行之間的文本都會被識別為一個命令組合,?usage?后的第一個字母將會被識別為這個程序的名字,所有命令組合的每一個部分(空格分隔)都會成為字典中的一個key。

參數

形如?<argument>?或者?ARGUMENT?的文本將會被識別為參數。

在轉化后的字典中的取值為?True?或者?False?。

Usage: my_program <host> <port>

選項

形如?-o?或者?--option?的文本將會被識別為選項。

在轉化后的字典中的取值為?True?或者?False?。

Usage: my_program -f <file>

Tips:

  • 短選項可以組合起來,比如?-abc?等價于?-a -b -c
  • 長選項需要的參數需要使用?=?或者空格來分隔,?--input=ARG?等價于?--input ARG
  • 短選項可以不需要空格,?-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?部分用于指定某些特殊情形,比如:

  • 將某個短參數與長參數關聯起來,比如?-i <file>, --input <file>
  • 某個選項有一個參數
  • 選項的默認值,比如?--coefficient=K The K coefficient [default: 2.95]

總結

以上是生活随笔為你收集整理的docopt——好用的Python命令行参数解释器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。