getopt
該模塊是專門用來處理命令行參數(shù)的哆键。
函數(shù):opts, args = getopt(args, shortopts, longopts = [])
參數(shù):
- args: 一般是sys.argv[1:]
- shortopts:
短格式 (-)
妖异, 只表示開關(guān)狀態(tài)時抵拘,即后面不帶附加數(shù)值時周叮,在分析串中寫入選項字符喧枷。當選項后面要帶一個附加數(shù)值時伞辛,在分析串中寫入選項字符同時后面加一個:
號 溢豆, 如"vc:"币绩。 - longopts:
長格式(--)
蜡秽, 只表示開關(guān)狀態(tài)時府阀,即后面不帶附加數(shù)值時,在隊列中寫入選項字符芽突。當選項后面要帶一個附加數(shù)值時试浙,在隊列中寫入選項字符同時后面加一個=
號 , 如["help", "log="] 寞蚌。
返回:
- opts: 分析出的格式信息田巴,是一個
兩元組
的列表,即[(選項串1, 附加參數(shù)1), (選項串2, '')]睬澡, 注意如果沒有附加數(shù)值則為空字符串 - args: 為不屬于格式信息的剩余的命令行參數(shù)
import sys
import getopt
if __name__ == '__main__':
try:
opts, args = getopt.getopt(sys.argv[1:], 'hi:', ['help', 'input='])
print (opts, args)
except getopt.GetoptError as e:
print ('Got a eror and exit, error is %s' % str(e))
測試結(jié)果如下:
- 不傳任何參數(shù), 返回兩個空的list
$ python getopt_test.py
[] []
- 不傳帶
-
和--
的參數(shù)固额, opts是空的列表,args是兩個入?yún)⒌牧斜?/li>
$ python getopt_test.py value1 value2
[] ['value1', 'value2']
- 輸入含有
-h
的參數(shù)煞聪, 可以得知h后不接:
斗躏, 表明-h
不會去取值
$ python getopt_test.py -h
[('-h', '')] []
$ python getopt_test.py -h 1
[('-h', '')] ['1']
$ python getopt_test.py -h -p
Got a eror and exit, error is option -p not recognized
- 輸入含有
-i
的參數(shù), 可以得知i后接:
昔脯, 表明-i
一定會去取值
$ python getopt_test.py -i
Got a eror and exit, error is option -i requires argument
$ python getopt_test.py -i 1
[('-i', '1')] []
$ python getopt_test.py -i -p
[('-i', '-p')] []
- 輸入
其他帶有-
的參數(shù)啄糙, 會直接報錯,不認識這個參數(shù)
$ python getopt_test.py -a
Got a eror and exit, error is option -a not recognized
- 輸入帶有
--
的參數(shù)云稚, 和帶-
的參數(shù)類似隧饼, 如果后面不接=
,則表示不需要取值静陈, 后面接了=
燕雁, 則表示一定要取值。
$ python getopt_test.py --help
[('--help', '')] []
$ python getopt_test.py --help 1
[('--help', '')] ['1']
$ python getopt_test.py --help --ls
Got a eror and exit, error is option --ls not recognized
$ python getopt_test.py --help --input
Got a eror and exit, error is option --input requires argument
$ python getopt_test.py --help --input 2
[('--help', ''), ('--input', '2')] []
$ python getopt_test.py --help --input 2 3
[('--help', ''), ('--input', '2')] ['3']
- 輸入全體參數(shù)
$ python getopt_test.py -h -i 1 --help --input 2 3
[('-h', ''), ('-i', '1'), ('--help', ''), ('--input', '2')] ['3']