使用docopt轻松实现python命令行参数处理
浏览:800次 出处信息
前面认识的一个python库 docopt,可以使用__doc__来实现命令行参数的处理,使用起来非常简单;我也刚好有在命令行添加或删除testsuite/testcase的需求,所以写了一个demo文件。
PS:我才发现docopt有2年没更新了,好吧,还是可以继续用它。
直接上我的demo程序: https://github.com/smilejay/python/blob/master/py2016/try_docopt.py
#!/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
执行效果:
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
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:常用跨域方法实践(二)
后一篇:如何设计软件模块的自动化测试? >>
文章信息
- 作者:master 来源: 笑遍世界
- 标签: docopt
- 发布时间:2016-03-01 23:46:29
近3天十大热文
- [69] Twitter/微博客的学习摘要
- [65] find命令的一点注意事项
- [64] IOS安全–浅谈关于IOS加固的几种方法
- [62] Go Reflect 性能
- [62] android 开发入门
- [61] 如何拿下简短的域名
- [61] 流程管理与用户研究
- [60] Oracle MTS模式下 进程地址与会话信
- [58] 图书馆的世界纪录
- [58] 读书笔记-壹百度:百度十年千倍的29条法则