1.getopt模块
通过一段简单代码来学习,代码的作用是获取命令行中的IP和Port。
#!/usr/bin/env python # -*-coding:utf-8-*- import sys import getopt def main(): ip = ‘‘ port = ‘‘ try: options, args = getopt.getopt(sys.argv[1:], ‘hi:p:‘, [‘ip=‘,‘port=‘]) print(options) # print(args) except getopt.GetoptError: print(‘error:test_getopt.py -i/--ip <ip_addr> -p/--port <port_addr>‘) sys.exit(2) for name,value in options: # print(name) if name == ‘-h‘: print(‘test_getopt.py -i/--ip <ip_addr> -p/--port <port_addr>‘) sys.exit() elif name in (‘-i‘, ‘--ip‘): print(‘value:{0}‘.format(value)) # print(value) ip = value elif name in (‘-p‘, ‘--port‘): print(‘value:{0}‘.format(value)) # print(value) port = value print(‘ip=‘, ip) print(‘port=‘, port) if __name__ == "__main__": main()
getopt模块是专门处理命令行参数的模块,用于获取命令行选项和参数,也就是sys.argv。命令行选项使得程序的参数更加灵活。支持短选项模式(-)和长选项模式(--)。
该模块提供了两个方法及一个异常处理来解析命令行参数。
getopt.getopt 方法用于解析命令行参数列表,语法格式如下:
getopt.getopt(args, options,[long_options])
args:要解析的命令行参数列表,一般为sys.args[1:],因为sys.args[0]为文件名本身
options:短命令,带":"时将匹配命令行中短命令后紧跟的参数
long_options:长命令,带"="时将匹配命令行中长命令后紧跟的参数
上述代码可使用命令python test_xx.py -i 192.168.0.1 -p 8888或者python test_xx.py --ip=192.168.0.1 --port=8888,这是比较规范的写法。
实际使用时,要注意:1-短命令后紧跟的字符都将被当作时参数内容,因此短命令后不可加":"或"="等多余内容,应紧跟参数,错误写法:python test_xx.py -i:10.1.1.1 -p:9999
2-长命令写法比较自由,可以写作python test_xx.py --i 10.1.2.3 --p/--po/--por 9999或python test_xx.py --i:10.1.2.3 --p/--po/--por:9999
在没有找到参数列表,或选项的需要的参数为空时会触发该异常。
异常的参数是一个字符串,表示错误的原因。属性 msg 和 opt 为相关选项的错误信息。
可以在异常信息中提示命令行的正确用法。
原文:https://www.cnblogs.com/wk179002/p/11287834.html