简介
getopt模块用于解析脚本参数,该模块是专门用来处理命令行参数的
getopt.getopt(args, shortopts, longopts=[])
解析命令行选项及参数列表
- args:要解析的参数列表,但不包括当前执行的python脚本名称,一般等同于sys.argv[1:]。
- shortopts(短选项-):要识别的短参数字符串,如果后接:表示需要给定参数。
例如:hw:c:
-h
后面没有冒号:表示后面不带参数,p:
和i:
后面有冒号表示后面需要参数 - longopts(长选项--):要识别的长参数列表(不包括--前缀),长选项如果后接=表示需要给定参数,不支持可选参数。
例如:
["help","warning=","critical="]
help
后面没有等号=,表示后面不带参数;其他三个有=,表示后面需要参数
注意:定义命令行参数时,要先定义带'-'选项的参数,再定义没有‘-’的参数
返回值
函数返回值由两个元素组成:
- 第一个是
(option, value)
元组的列表- 返回值
options
是个包含元组的列表,每个元组是分析出来的格式信息,比如[('-w','5),('-c','10')]
- 返回值
- 第二个是args剥离短选项及其参数和长选项及其参数之后剩余的参数列表。
(option, value)
元组中的option表示包含-或--前缀的选项,value表示该option对应的参数,可以为空字符串表示无参数-
args
是个列表,包含那些没有‘-’或‘--’的参数,比如:['55','66']
-
然后现在再看官网思路就清晰多了:https://docs.python.org/2/library/getopt.html
在脚本中,经典用法是这样的:
def parameter_check():
try:
opts, args = getopt.getopt(sys.argv[1:], "hi:p:", ["help", "ip=", "port="])
except getopt.GetoptError as err:
# print help information and exit:
print(str(err)) # will print something like "option -a not recognized"
usage()
sys.exit(2)
ip=port=None
for opt, arg in opts:
if opt in ("-i", "--ip"):
ip = arg
elif opt in ("-p", "--port"):
port = arg
elif opt in ("-h", "--help"):
usage()
exit()
else:
usage()
exit()
if ip==None or port==None:
usage()
sys.exit()
return(ip, port)
if __name__ == "__main__":
print(parameter_check())
测试
$python test.py -h
Program: test.py
Version:V1.0.0
Author: Robin
Date:2020-01-16
Usage:
--help -h Help
--ip -i IP_address
--port -p Port_number
$python test.py --ip 192.168.3.1 --port 22
('192.168.3.1', '22')
网友评论