回覆列表
-
1 # 小小猿愛嘻嘻
-
2 # 蘿蔔頭實驗室
argparse已經很好了,還要什麼腳踏車?
作為不精通二三十種語言的陳年碼農,每次寫程式碼前都要選一種語言然後開始複習一下語法。最快的複習方法是直接看自己寫過的程式碼。argparse這樣的程式碼肯定寫過啊,每次拷過來改改就行了。碰到新需求再去翻翻文件,同時完善自己的程式碼模板。
順便說一句,查文件不是壞事,印象中argparse有個地方就變過(新老版本不一致)。
下面是一段我的程式碼 (https://github.com/loblab/rfask),基本涵蓋了argparse的各種用法。因為自己記得程式碼的功能,所以很容易回憶起程式碼的意思,比查文件要快很多。
類似的問題還有logging. 要不要自己寫或再去找別的?我很謙虛,覺得大多數人用的肯定比自己寫的好啊,直接用logging模組就可以了。
這裡介紹2個非常不錯的Python第三方命令列工具(模組),分別是click和fire,相比較argparse來說,功能相差不大,但使用起來更簡單,也更易學習和掌握,下面我簡單介紹一下這2個工具的安裝和使用,感興趣的朋友可以嘗試一下:
click命令列工具這是Flask作者開發的一個Python第三方命令列工具,支援任意命令巢狀以及自動生成幫助文件,可以明顯加快CLI程式編寫速度,下面我簡單介紹一下這個工具:
1.首先,安裝click工具(模組),這個直接在cmd視窗輸入安裝命令“pip install click”就行,如下:
2.安裝完成後,我們就可以直接使用click模組來編寫命令列指令碼了,測試程式碼如下,非常簡單,首先使用@click.command() 裝飾函式,使之成為命令列介面,接著使用@click.option() 裝飾函式,為其新增2個命令列選項(count和name),default為引數預設值,help為引數說明,type為引數型別,required為必須引數,prompt為提示使用者輸入:
開啟終端(或cmd視窗),執行“python 指令碼 --help”命令就可以直接檢視幫助文件,如下,包括命令說明、引數名稱及引數說明等:
然後根據文件說明,我們就可以直接傳入引數測試命令列指令碼了,如下,非常方便:
fire命令列工具這是谷歌開源的一個Python第三方命令列工具,基本功能和使用方式與click差不多,可以根據函式、類、字典、模組等自動生成命令幫助文件和使用說明,下面我簡單介紹一下這個工具:
1.首先,安裝fire工具(模組),這個也直接在cmd命令列輸入安裝命令“pip install fire”就行,如下:
2.安裝完成後,我們就可以直接使用fire模組來編寫命令列指令碼了,測試程式碼如下,一個非常簡單的計算兩天之差函式,輸入引數為date_str1和date_str2,輸出為相差天數:
開啟終端(或cmd視窗),執行“python 指令碼”命令就可以直接生成幫助文件,如下,包括命令型別、命令列數、命令說明、引數名稱等:
然後我們就可以直接傳入引數測試命令列指令碼了,如下,非常簡單,如果傳入引數有錯,這裡會自動給出錯誤提示:
至此,我們就完成了click和fire這2個python命令列工具的安裝和使用。總的來說,這2個工具使用起來非常方便,相比較argprse來說,更易學習和理解,只要你熟悉一下相關文件和說明,多除錯幾遍程式,很快就能掌握的,當然,還有其他第三方python命令列工具,像docopt等也都非常不錯,網上也有相關教程,感興趣的話,可以搜一下,希望以上分享的內容能對你有所幫助吧,也歡迎大家評論、留言進行補充。