Python中的getopt,optparse模塊都可以進行命令行程序的開發,不過它們已經被廢棄,在2.7和3.2版本中引入了argparse模塊;這里介紹使用argparser模塊,只需要數十行代碼,就可以做出漂亮的命令行程序。
1.基本的命令行
看看官方文檔里的一個示例:
這幾行代碼實現的功能為:如果命令行輸入不帶--sum選項,則對輸入的多個整數執行max操作;否則,執行sum操作。例如:在命令行中執行:python prog.py 1 2 3 4輸出為:4
在命令行中執行:python prog.py 1 2 3 4 --sum輸出為:10
上面的代碼中,主要的過程分為三個步驟:
-
調用argparse.ArgumentParser的構造器創建一個ArgumentParser對象。
-
調用ArgumentParser的add_argument()方法添加命令行的參數,包括可選參數和必選參數。其中以--、 -開頭的表示可選參數,其它的表示必須輸入的參數。
-
調用parser.parse_args()方法對傳入的sys.argv參數進行解析。
2.實現子命令
有時候,我們可以根據功能將命令行分組成一系列相關的子命令。例如,Git命令行可以分為以下幾組:
在Python中,利用argparse模塊也可以很容易做出這樣的子命令行程序。
例如,我們要做一個對用戶信息進行管理的命令行程序,包括添加、刪除、查詢顯示等幾個功能。
我們可以根據功能將其分為三個子命令:add,delete,show。
相應的代碼可以這樣寫:
對上面的代碼進行概要的解釋:ArgumentParser對象的add_subparsers()方法創建了一個特殊的action實例,對這個實例分別調用add_parser()方法來創建子命令對應的ArgumentParser,再調用這個ArgumentParser實例的add_argument()方法來添加子命令的參數。一個比較方便的地方在于,可以通過ArgumentParser的set_defaults()方法來設置子命令對應的處理函數。上面的示例中,分別為三個子命令設置了處理函數:add_fn,delete_fn,show_fn。
在命令行程序中執行:python cmd.py --help,將顯示出以下信息:
從幫助信息中可以看到,命令行被組織為三個子命令,分別為add,delete,show。
在命令行中執行:python cmd.py add --help,可以查看add子命令的幫助信息:
對于add子命令,它有3個參數,分別為用戶名、聯系地址、電話號碼;其中用戶名為必選參數,其它兩個為可選參數。
在命令行中執行:python cmd.py add --name 'Eric' --addr 'California,USA' --phone '0076938377'`
添加一個User的處理邏輯將由add_fn()來完成。程序中將得到一個信息為{name='Eric',addr='California,USA', phone='0076938377'}的User。
其它的delete和show子命令與此類似,不再贅述。
3.小結
使用Python的argparse模塊,短短的幾十行代碼就可以搭建起來一個命令行程序的骨架。
argparse模塊中最重要的是ArgumentParser對象,它包含了以下幾個方法:
-
add_argument()
-
add_subparsers()
-
parse_args()
-
編程
+關注
關注
88文章
3592瀏覽量
93596 -
程序員
+關注
關注
4文章
950瀏覽量
29763 -
python
+關注
關注
56文章
4782瀏覽量
84453
原文標題:干貨 | 使用Python輕松寫出漂亮的命令行程序
文章出處:【微信號:ZTEdeveloper,微信公眾號:中興開發者社區】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論