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