python docopt模組詳解

2021-09-26 09:43:45 字數 1772 閱讀 7451

docopt

用了這個傢伙可以在命令列執行py檔案時傳遞引數,例如 :python test.py --tread_num 10

##1.安裝

以使用者管理為例子做一下測試。

示例**:

"""usermanage

usage:

user_manage user (add|delete) () [--authority=]

user_manage change_name user_manage change_pwd user_manage add_description ...

user_manage -h | --help

user_manage --version

options:

-h --help     幫助.

-v --version     檢視版本號.

--authority=許可權設定 [default: user].

--group=分組

"""from docopt import docopt

arguments = docopt(__doc__, version='usermanage 2.0')

if arguments.get("add"):

print("新增使用者成功")

elif arguments.get("delete"):

print("刪除使用者成功")

elif arguments.get("change_name"):

print("修改名字成功")

elif arguments.get("change_pwd"):

print("修改密碼成功")

elif arguments.get("add_description"):

print("新增使用者描述成功")

測試結果如下:

**解讀

作者很雞賊,它解析py檔案__doc__的返回值 。然後生成乙個dict物件,比如上面例項**在執行python test.py user add fireln 123456 --authority=admin後生成的dict物件就是:

所以命令列所使用的命令都需要在py檔案的說明文件裡定義。在命令列執行時

定義命令列

命令列定義知道在**定義的了,下面來一起學習下怎麼定義的吧。

定義命令列的兩個部分分別是usage和options,下面具體介紹。

usage

usage是有自己的規則的,每乙個usage都可以包含如下元素,可參照user_manage user (add|delete) () [--authority=]:

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

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

usage中用到的一些標識的含義,正確地使用他們能夠更好的完成解析任務:

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

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

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

…代表元素可以重複出現,最後解析的結果是乙個列表

[options]

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

egret 變數 Egret全新RES模組詳解

近期egret發布了全新的4.0版本,此次版本中最大的特色就是釋放了全新的res資源管理模組。相信不少人在官網或者直播中已經對新的res資源管理模組有所了解。這篇文章就全新的res進行一次介紹。與此同時,在引擎新版本中,由於引入了typescript 2.1.4,所以在語法糖層面也增加不少特性,我後...

python中urllib模組用法例項詳解

一 問題 近期公司專案的需求是根據客戶提供的api,我們定時去獲取資料,之前的方案是用php收集任務存入到redis佇列,然後在linux下做乙個常駐程序跑某乙個p程式設計客棧hp檔案,該php檔案就乙個無限迴圈,判斷redis佇列,有就執行,沒有就break.二 解決方法 最近剛好學了一下pyth...

Python Mock模組原理及使用方法詳解

一 mock是什麼?英譯中含義有 虛假的 不誠實的 模仿的 模擬的 這個意思 這個庫的主要功能就是模擬一些事務 官方解釋 mock是python中乙個用於支援單元測試的庫,它的主要功能是使用mock物件替代掉指定的python物件,以達到模擬物件的行為 二 為什麼要用mock?舉例 假設你開發乙個專...