sys 模塊通過 sys.argv 屬性提供了對命令行參數(shù)的訪問。 命令行參數(shù)是調用某個程序時除程序名以外的其它參數(shù)。這樣命名是有歷史原因的,在一個基于文本的環(huán)境里(比如 UNIX 操作系統(tǒng)的 shell 環(huán)境或者 DOS-shell ),這些參數(shù)和程序的文件名一同被輸入的。但在 IDE 或者 GUI 環(huán)境中可能就不會是這樣了, 大多 IDE 環(huán)境都提供一個用來輸入”命令行參數(shù)”的窗口;這些參數(shù)最后會像命令行上執(zhí)行那樣被傳遞給程序。
熟悉 C 語言的讀者可能會問了, “argc 哪去了?” argc 和 argv 分別代表參數(shù)個數(shù)(argument count)和參數(shù)向量(argument vector)。argv 變量代表一個從命令行上輸入的各個參數(shù)組成的字符串數(shù)組;argc 變量代表輸入的參數(shù)個數(shù)。在 Python 中, argc 其實就是 sys.argv 列表的長度,而該列表的第一項 sys.argv[0] 永遠是程序的名稱。
在python中 處理命令行參數(shù)的模塊有兩個:
getopt 模塊(簡單)
optparse 模塊(更為精細)
1 getopt()
該模塊是專門用來處理命令行參數(shù)的。
函數(shù)原型
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
執(zhí)行效果:
ipis---- 127.0.0.1portis---- 80
或者
ipis---- 127.0.0.1portis---- 80
解釋說明:
“hp:i:”
短格式 — h 后面沒有冒號:表示后面不帶參數(shù),p:和 i:后面有冒號表示后面需要參數(shù)
[“help”,”ip=”,”port=”]
長格式 — help后面沒有等號=,表示后面不帶參數(shù),其他三個有=,表示后面需要參數(shù)
返回值 options 是個包含元祖的列表,每個元祖是分析出來的格式信息,比如 [(‘-i’,’127.0.0.1’),(‘-p’,’80’)] ;
args 是個列表,包含那些沒有‘-’或‘–’的參數(shù),比如:[‘55’,’66’]
注意:定義命令行參數(shù)時,要先定義帶’-‘選項的參數(shù),再定義沒有‘-’的參數(shù)
評論