(本例基于win7 + python3.4)
import getopt, sys ''' getopt 模块专门用来处理命令行参数 函数 getopt(args, shortopts, longopts = []) 参数 args 一般是sys.argv[1:] shortopts 短格式 (-) longopts 长格式(--) 如: options, args = getopt.getopt(sys.argv[1:], "hp:i:", ["help", "ip=", "port="]) 参数分析: sys.argv[1:] --- sys.argv[0] 第一个参数,是脚本文件名 --- sys.argv[1:] 第二个及后面的参数,是脚本文件运行所需的参数 "hp:i:" 短格式 (shortopts) --- h 后面没有冒号:表示后面不带参数 --- p:和 i:后面有冒号表示后面需要参数 ["help", "ip=", "port="] 长格式 (longopts) --- help后面没有等号=,表示后面不带参数 --- 其他两个有等号=,表示后面需要参数 options 返回值 --- 是个包含元祖的列表,每个元组是分析出来的格式信息,比如 [('-i','127.0.0.1'),('-p','80')] ; args 返回值 ---是个列表,包含那些没有'-'或'--'的参数,比如:['hello','world','you'] 注意:定义命令行参数时,要先定义带'-'选项的参数,再定义没有'-'的参数 使用示例: $ python test.py -i 127.0.0.1 -p 80 hello world you $ python test.py --ip=127.0.0.1 --port=80 hello world you ''' def usage(): print('Usage:') print(' -h --help') print(' -i --ip') print(' -p --port') print('Example:') print(' $ python test.py -i 127.0.0.1 -p 80 hello world') print(' $ python test.py --ip=127.0.0.1 --port=80 hello world') try: options, args = getopt.getopt(sys.argv[1:], "hp:i:", ["help", "ip=", "port="]) except getopt.GetoptError as err: print('Error:') print(' ', str(err)) usage() sys.exit(2) for opt, value in options: if opt in ("-h", "--help"): usage() elif opt in ("-i", "--ip"): print('ip:', value) elif opt in ("-p", "--port"): print('port:', value) for value in args: print(value)
【运行效果图】