* 作者:煮酒品茶 tea * 博客:http://www.zwhset.com http://cwtea.blog.51cto.com * 目前在京峰教育担任python讲师 #0、命令行参数介绍 煮酒品茶:说明再补,有事先 > sys.argv #获取命令行参数为一个列表 > getopt # 这个模块用于解析sys.argv的参数,可以支常用的- 与 --方法。通过关键字取值来进行解析。 > argparse 更复杂的命令行处理交由argparse来处理 经常看到: > ./webbench -c 500 -t 60 http://www.baidu.com/ > ./webbench --help #1、sys.argv 获取命令行传的参数输出为列表 ~~~ #coding:utf8 import sys print(sys.argv) ~~~ 结果为列表 args[0] 为文件名,后面跟着是一个个参数。可根据相应去取值做处理就可以。 ~~~ root@zwhset-python-22-190 books]# python ar.py ['ar.py'] [root@zwhset-python-22-190 books]# python ar.py first_arg second_arg ['ar.py', 'first_arg', 'second_arg'] ~~~ #2、getopt模块 ## 2.1、-参数 类unix风格参数 -c -n ~~~ In [1]: import getopt In [2]: args = ['-a', '-b', '-cfoo', '-d', 'bar', 'a1', 'a2'] #实际为sys.argv[1:] In [3]: optlist, args = getopt.getopt(args, 'abc:d:') #注意第二个参数的编写 In [4]: optlist Out[4]: [('-a', ''), ('-b', ''), ('-c', 'foo'), ('-d', 'bar')] In [5]: args Out[5]: ['a1', 'a2'] In [6]: dict(optlist) #对结果转换成字典从而进行更高级的处理 Out[6]: {'-a': '', '-b': '', '-c': 'foo', '-d': 'bar'} ~~~ ## 2.2、--参数 长参 --help --nova-list ~~~ In [37]: args = ['--condition=foo', '--testing', '--output-file', 'abc.def', '-x', 'a1', 'a2'] In [38]: long_arg = [ ....: ... 'condition=', 'output-file=', 'testing'] In [40]: optlist, args = getopt.getopt(args, 'x', long_arg) In [41]: optlist Out[41]: [('--condition', 'foo'), ('--testing', ''), ('--output-file', 'abc.def'), ('-x', '')] In [42]: args Out[42]: ['a1', 'a2'] In [43]: dict(optlist) Out[43]: {'--condition': 'foo', '--output-file': 'abc.def', '--testing': '', '-x': ''} ~~~ ## 2.3 实现 webbench 的参数功能 **代码:** ~~~ #coding:utf8 ''' ./webbench -c 500 -t 60 http://www.baidu.com/ ./webbench --help ''' import sys import getopt def webbench(url,client,time): print 'webbench atack:{url},client number : {client},time:{time}'.format(url=url, client=client, time=time) def webbench_help(): print 'help info:\n./webbench -c 500 -t 60 http://www.baidu.com/' def main(): try: opts, args = getopt.getopt(sys.argv[1:], "c:t:", ["help"]) opts = dict(opts) if '--help' in opts: webbench_help() elif '-c' in opts and '-t' in opts: webbench(url=args[0],client=opts['-c'],time=opts['-t']) except Exception as e: webbench_help() if __name__ == '__main__': main() ~~~ **结果如下:** ~~~ E:\code\test>python op.py -c 200 -t 60 http://www.zwhset.com/ webbench atack:http://www.zwhset.com/,client number : 200,time:60 E:\code\test>python op.py --help help info: ./webbench -c 500 -t 60 http://www.baidu.com/ E:\code\test>python op.py --askdf help info: ./webbench -c 500 -t 60 http://www.baidu.com/ ~~~ 煮酒品茶:argparse再补,有事先