前面认识的一个python库 docopt,可以使用__doc__来实现命令行参数的处理,使用起来非常简单;我也刚好有在命令行添加或删除testsuite/testcase的需求,所以写了一个demo文件。
PS:我才发现docopt有2年没更新了,好吧,还是可以继续用它。
直接上我的demo程序:  https://github.com/smilejay/python/blob/master/py2016/try_docopt.py
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60  | 
						#!/usr/bin/env python """Just try docopt lib for python Usage:   try_docopt.py (-h | --help)   try_docopt.py [options] Examples:   try_docopt.py -s +ts5,-ts2 -c +tc5,-tc3 Options:   -h, --help   -s, --testsuite suites    #add/remove some testsuites   -c, --testcase cases      #add/remove some testcases """ from docopt import docopt testsuites = ['ts1', 'ts2', 'ts3', 'ts4'] testcases = ['tc1', 'tc2', 'tc3', 'tc4'] def add_remove(tlist, opt_list):     '''     add/remove item in tlist.     opt_list is a list like ['+ts5', '-ts2'] or ['+tc5', '-tc3'].     '''     flag = 0     for i in opt_list:         i = i.strip()         if i.startswith('+'):             tlist.append(i[1:])         elif i.startswith('-'):             if i[1:] in tlist:                 tlist.remove(i[1:])             else:                 print 'bad argument: %s is not in %s' % (i[1:], tlist)                 flag = 1         else:             print 'bad argument: %s' % i             flag = 1     if flag:         return flag     else:         return tlist if __name__ == '__main__':     args = docopt(__doc__)     ts_arg = args.get('--testsuite')     tc_arg = args.get('--testcase')     if ts_arg:         ts_opt_list = ts_arg.strip().split(',')         testsuites = add_remove(testsuites, ts_opt_list)     if tc_arg:         tc_opt_list = tc_arg.strip().split(',')         testcases = add_remove(testcases, tc_opt_list)     if testsuites != 1 and testcases != 1:         print 'ts: %s' % testsuites         print 'tc: %s' % testcases  | 
					
执行效果:
| 
					 1 2 3 4 5 6  | 
						Jay-Ali:py2016 jay$ python try_docopt.py -s +ts5,+ts8,-ts1 --testcase -tc3,+tc6 ts: ['ts2', 'ts3', 'ts4', 'ts5', 'ts8'] tc: ['tc1', 'tc2', 'tc4', 'tc6'] Jay-Ali:py2016 jay$ Jay-Ali:py2016 jay$ python try_docopt.py -s +ts5,+ts8,-ts1 --testcase -tc3,+tc6,-tc7 bad argument: tc7 is not in ['tc1', 'tc2', 'tc4', 'tc6']  | 
					
docopt的github地址:https://github.com/docopt/docopt
更多的example:https://github.com/docopt/docopt/tree/master/examples
后来觉得还是argparse模块比较好用,它是python自动带的模块,无需像docopt一样需要单独安装。示例:https://github.com/smilejay/python/blob/master/py2016/try_argparse.py