赞
踩
if __name__ == '__main__':
import optparse
ops_obj = optparse.OptionParser()
ops_obj.add_option("-p", "--P", dest="TestOption", default="默认值", help="说明信息")
ops_obj.add_option("-s", "--S", dest="TestOption2", default="默认值2", help="说明信息")
opts, args = ops_obj.parse_args()
test_option1 = opts.TestOption
test_option2 = opts.TestOption2
print("-p或者--P选项的参数为", test_option1)
print("-s或者--S选项的参数为", test_option2)
python demo.py a b c
$ cat demo.py #-*- coding: UTF-8 -*- import os import sys def demo(): print sys.argv print len(sys.argv) for i in range(len(sys.argv)): print "parameter %s --- %s" %(i, sys.argv[i]) if __name__ == "__main__": demo() $ python demo.py a b c ['demo.py', 'a', 'b', 'c'] 4 parameter 0 --- demo.py parameter 1 --- a parameter 2 --- b parameter 3 --- c
主要是这个接口
options, args = getopt.getopt(args, shortopts, longopts=[])
第一个参数args:一般是sys.argv[1:]。过滤掉sys.argv[0],它是执行脚本的名字,不算做命令行参数。
第二个参数shortopts:短格式分析串。例如:“hp:i:”,h后面没有冒号,表示后面不带参数;p和i后面带有冒号,表示后面带参数。
第三个参数longopts:长格式分析串列表。例如:[“help”, “ip=”, “port=”],help后面没有等号,表示后面不带参数;ip和port后面带冒号,表示后面带参数。
而返回值options是以元组为元素的列表,每个元组的形式为:(选项串, 附加参数),如:(‘-i’, ‘192.168.0.1’)
[(‘-a’, ‘A’), (‘–apple’, ‘A’), (‘-b’, ‘B’), (‘–banana’, ‘B’), (‘-h’, ‘’)]
返回值args是个列表,其中的元素是那些不含’-‘或’–'的参数。
在命令行运行下述命令:
python test_getopt.py -i 192.168.0.1 -p 80 123 a
或着
python test_getopt.py -ip=192.168.0.1 --port=80 123 a
#encoding=utf-8 import getopt import sys def main(argv): try: options, args = getopt.getopt(argv, "hp:i:", ["help", "ip=", "port="]) except getopt.GetoptError: sys.exit() for option, value in options: if option in ("-h", "--help"): print("help") if option in ("-i", "--ip"): print("ip is: {0}".format(value)) if option in ("-p", "--port"): print("port is: {0}".format(value)) print("error args: {0}".format(args)) if __name__ == '__main__': main(sys.argv[1:])
打印如下:
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。