引用
Python 命令行參數(shù),修改并增加了部分內(nèi)容,原文鏈接地址ttp://www.runoob.com/python/python-command-line-arguments.html,如涉及版權(quán)問(wèn)題請(qǐng)及時(shí)聯(lián)系我!
Python 提供了 getopt 模塊來(lái)獲取命令行參數(shù),getopt模塊是專(zhuān)門(mén)處理命令行參數(shù)的模塊,用于獲取命令行選項(xiàng)和參數(shù)。下面通過(guò)實(shí)際例子來(lái)詳細(xì)解釋如何操作。
類(lèi)似于下面包含參數(shù)的命令行
例1- $ python test.py -i input.txt -o output.txt middle.txt final.txt
例2- $ python test.py --ifile=input.txt --ofile=output.txt middle.txt
getopt.getopt 方法函數(shù)原型:
getopt.getopt(args, shortopts, longopts=[])
方法參數(shù)說(shuō)明:
- ** args:args為需要解析的參數(shù)列表。一般使用sys.argv[1:]**,這樣可以過(guò)濾掉第一個(gè)參數(shù)(ps:第一個(gè)參數(shù)是腳本的名稱(chēng),即例子中的test.py文件名,它不應(yīng)該作為參數(shù)進(jìn)行解析).
- ** shortopts:**簡(jiǎn)寫(xiě)參數(shù)列表,短格式 (-) ,冒號(hào)(:)表示該選項(xiàng)必須有附加的參數(shù),不帶冒號(hào)表示該選項(xiàng)不附加參數(shù).
- ** longopts:**長(zhǎng)參數(shù)列表,長(zhǎng)格式(--) ,等號(hào)(=)表示如果設(shè)置該選項(xiàng),必須有附加的參數(shù),否則就不附加參數(shù)。
方法返回值:
- opts:分析出的(option, value)列表對(duì)。
- args:不屬于格式信息的剩余命令行參數(shù)列表。
實(shí)例
假定我們創(chuàng)建這樣一個(gè)腳本,可以通過(guò)命令行向腳本文件傳遞兩個(gè)文件名,同時(shí)我們通過(guò)另外一個(gè)選項(xiàng)查看腳本的使用。腳本使用方法如下:
usage: test.py -i <inputfile> -o <outputfile>
test.py 文件代碼如下所示:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import sys, getopt
def main(argv):
inputfile = ''
outputfile = ''
try:
opts, args = getopt.getopt(argv,"hi:o:",["help","ifile=","ofile="])
except getopt.GetoptError:
sys.exit(2)
for opt, arg in opts:
if opt in ("-h","--help"):
print 'test.py -i <inputfile> -o <outputfile>'
sys.exit()
elif opt in ("-i", "--ifile"):
inputfile = arg
elif opt in ("-o", "--ofile"):
outputfile = arg
print '輸入的文件為:', inputfile
print '輸出的文件為:', outputfile
if __name__ == "__main__":
main(sys.argv[1:])
執(zhí)行以上代碼,輸出結(jié)果為:
$ python test.py -h
usage: test.py -i <inputfile> -o <outputfile>
$ python test.py -i input.txt -o output.txt middle.txt final.txt
輸入的文件為: input.txt
輸出的文件為: output.txt
$ python test.py --ifile=input.txt --ofile=output.txt middle.txt final.txt
輸入的文件為: input.txt
輸出的文件為: output.txt
對(duì)代碼的理解:
main(sys.argv[1:])
調(diào)用main函數(shù),getopt.getopt獲取命令行參數(shù)-i input.txt -o output.txt middle.txt final.txt,返回值opts是個(gè)包含元祖的列表,每個(gè)元祖是分析出來(lái)的格式信息,比如 [('-i','input.txt'),('-o','output.txt')] ;
返回值args是個(gè)列表,包含那些沒(méi)有‘-’或‘--’的參數(shù),比如:['middle.txt','final.txt']
"hi:o:"
短格式 h 后面沒(méi)有冒號(hào):表示后面不帶參數(shù),i和 o后面有冒號(hào)表示后面需要參數(shù)["help","ifile=","ofile="]
長(zhǎng)格式 help后面沒(méi)有等號(hào)=,表示后面不帶參數(shù),其他兩個(gè)后面有=,表示后面需要參數(shù)
注意:定義命令行參數(shù)時(shí),要先定義帶'-'選項(xiàng)的參數(shù),再定義沒(méi)有‘-’的參數(shù)