sys 模塊通過 sys.argv 屬性提供了對命令行參數的訪問。 命令行參數是調用某個程序時除程序名以外的其它參數。這樣命名是有歷史原因的,在一個基于文本的環境里(比如 UNIX 操作系統的 shell 環境或者 DOS-shell ),這些參數和程序的文件名一同被輸入的。但在 IDE 或者 GUI 環境中可能就不會是這樣了, 大多 IDE 環境都提供一個用來輸入”命令行參數”的窗口;這些參數最后會像命令行上執行那樣被傳遞給程序。
熟悉 C 語言的讀者可能會問了, “argc 哪去了?” argc 和 argv 分別代表參數個數(argument count)和參數向量(argument vector)。argv 變量代表一個從命令行上輸入的各個參數組成的字符串數組;argc 變量代表輸入的參數個數。在 Python 中, argc 其實就是 sys.argv 列表的長度,而該列表的第一項 sys.argv[0] 永遠是程序的名稱。
在python中 處理命令行參數的模塊有兩個:
getopt 模塊(簡單)
optparse 模塊(更為精細)
1 getopt()
該模塊是專門用來處理命令行參數的。
函數原型
getopt(args, shortopts, longopts=[])
說明:
args, 一般是sys.argv[1:];
shortopts, 短格式 (-)
longopts, 長格式(–)
測試代碼:
#!/usr/bin/env python # start line# module doc# imported modulesimportsys,getopt# variable definitions# class definition# function definition# main programdefmain():proc_cmd_args()defproc_cmd_args():try: options,args = getopt.getopt(sys.argv[1:],"hp:i:",["help","ip=","port="])exceptgetopt.GetoptError: sys.exit()forname,valueinoptions:ifnamein("-h","--help"): usage()ifnamein("-i","--ip"):print'ip is----',valueifnamein("-p","--port"):print'port is----',valueif__name__ =='__main__': main()
測試:
pythontest.py-i127.0.0.1-p805566pythontest.py--ip=127.0.0.1--port=805566
執行效果:
ipis---- 127.0.0.1portis---- 80
或者
ipis---- 127.0.0.1portis---- 80
解釋說明:
“hp:i:”
短格式 — h 后面沒有冒號:表示后面不帶參數,p:和 i:后面有冒號表示后面需要參數
[“help”,”ip=”,”port=”]
長格式 — help后面沒有等號=,表示后面不帶參數,其他三個有=,表示后面需要參數
返回值 options 是個包含元祖的列表,每個元祖是分析出來的格式信息,比如 [(‘-i’,’127.0.0.1’),(‘-p’,’80’)] ;
args 是個列表,包含那些沒有‘-’或‘–’的參數,比如:[‘55’,’66’]
注意:定義命令行參數時,要先定義帶’-‘選項的參數,再定義沒有‘-’的參數
評論
查看更多