Python命令行参数解析模块optparse使用实例


Posted in Python onApril 13, 2015

示例

from optparse import OptionParser

[...]

def main():

    usage = "usage: %prog [options] arg"

    parser = OptionParser(usage)

    parser.add_option("-f", "--file", dest="filename",

                      help="read data from FILENAME")

    parser.add_option("-v", "--verbose",

                      action="store_true", dest="verbose")

    parser.add_option("-q", "--quiet",

                      action="store_false", dest="verbose")

    [...]

    (options, args) = parser.parse_args()

    if len(args) != 1:

        parser.error("incorrect number of arguments")

    if options.verbose:

        print "reading %s..." % options.filename

    [...]
if __name__ == "__main__":

    main()

增加选项(add_option())
OptionParser.add_option(option)

OptionParser.add_option(*opt_str, attr=value, ...)

定义短选项
parser.add_option(“-f”, attr=value, …)

定义长选项
parser.add_option(“?foo”, attr=value, …)

如果定义
​parser.add_option("-f", "--file", action="store", type="string", dest="filename")

命令行格式可以有以下形式
-ffoo

-f foo

--file=foo

--file foo

解析后结果
options.filename = “foo”

解析(parse_args())
(options, args) = parser.parse_args()

options 解析后的参数,以字典形式保存
args 不能解析的参数,以列表形式保存

行为(action)

●store 默认行为,保存值到dest
●“store_const” 保存常量
●“append” append this option's argument to a list
●“count” increment a counter by one
●“callback” call a specified function

设置默认值(default)

parser.add_option("-v", action="store_true", dest="verbose", default=True)

parser.set_defaults(verbose=True)

生成帮助提示(help)

提供help选项即可,可以用parser.print_help()打印出来

parser.add_option(“-f”, “?file”, dest=”filename”,help=”write report to FILE”, metavar=”FILE”)

设置boolean值

支持store_true和store_false两个行为

parser.add_option("-v", action="store_true", dest="verbose")

parser.add_option("-q", action="store_false", dest="verbose")

如果遇到-v,verbose=True;如果遇到-q,verbose=False

错误处理

(options, args) = parser.parse_args()

[...]

if options.a and options.b:

    parser.error("options -a and -b are mutually exclusive")

选项组(Grouping Options)

格式如下

class optparse.OptionGroup(parser, title, description=None)

group = OptionGroup(parser, "Dangerous Options",

                    "Caution: use these options at your own risk.  "

                    "It is believed that some of them bite.")

group.add_option("-g", action="store_true", help="Group option.")

parser.add_option_group(group)

提示结果如下
Usage: <yourscript> [options] arg1 arg2
Options:

  -h, --help            show this help message and exit

  -v, --verbose         make lots of noise [default]

  -q, --quiet           be vewwy quiet (I'm hunting wabbits)

  -f FILE, --filename=FILE

                        write output to FILE

  -m MODE, --mode=MODE  interaction mode: novice, intermediate, or

                        expert [default: intermediate]
  Dangerous Options:

    Caution: use these options at your own risk.  It is believed that some

    of them bite.
    -g                  Group option.
Python 相关文章推荐
CentOS 6.5下安装Python 3.5.2(与Python2并存)
Jun 05 Python
python中numpy包使用教程之数组和相关操作详解
Jul 30 Python
Python如何通过subprocess调用adb命令详解
Aug 27 Python
Python开发的HTTP库requests详解
Aug 29 Python
python爬取各类文档方法归类汇总
Mar 22 Python
详谈python中冒号与逗号的区别
Apr 18 Python
selenium使用chrome浏览器测试(附chromedriver与chrome的对应关系表)
Nov 29 Python
Python基于BeautifulSoup和requests实现的爬虫功能示例
Aug 02 Python
运用PyTorch动手搭建一个共享单车预测器
Aug 06 Python
python提取照片坐标信息的实例代码
Aug 14 Python
解决Django中修改js css文件但浏览器无法及时与之改变的问题
Aug 31 Python
Python 判断时间是否在时间区间内的实例
May 16 Python
初步介绍Python中的pydoc模块和distutils模块
Apr 13 #Python
Python随机生成数模块random使用实例
Apr 13 #Python
Python字典操作简明总结
Apr 13 #Python
Python单元测试框架unittest使用方法讲解
Apr 13 #Python
Python配置文件解析模块ConfigParser使用实例
Apr 13 #Python
深入Python函数编程的一些特性
Apr 13 #Python
Python命令行参数解析模块getopt使用实例
Apr 13 #Python
You might like
ThinkPHP空模块和空操作详解
2014/06/30 PHP
推荐几个开源的微信开发项目
2014/12/28 PHP
YII Framework框架教程之日志用法详解
2016/03/14 PHP
优秀js开源框架-jQuery使用手册(1)
2007/03/10 Javascript
基于JQuery的简单实现折叠菜单代码
2010/09/15 Javascript
关于js中alert弹出窗口文本换行问题简单详细说明
2012/12/11 Javascript
js判断浏览器类型的方法
2013/08/07 Javascript
表格奇偶行设置不同颜色的核心JS代码
2013/12/24 Javascript
jQuery中ajax的load()方法用法实例
2014/12/26 Javascript
jquery实现手机号码选号的方法
2015/07/31 Javascript
js中 javascript:void(0) 用法详解
2015/08/11 Javascript
JS实现IE状态栏文字缩放效果代码
2015/10/24 Javascript
js window对象属性和方法相关资料整理
2015/11/11 Javascript
利用Angularjs和Bootstrap前端开发案例实战
2016/08/27 Javascript
AngularJs导出数据到Excel的示例代码
2017/08/11 Javascript
Vue波纹按钮组件制作
2018/04/30 Javascript
微信小程序实现自上而下字幕滚动
2018/07/14 Javascript
Angularjs之ngModel中的值验证绑定方法
2018/09/13 Javascript
bootstrap实现tab选项卡切换
2020/08/09 Javascript
Vue页面跳转传递参数及接收方式
2020/09/09 Javascript
如何在Express4.x中愉快地使用async的方法
2020/11/18 Javascript
Python中实现的RC4算法
2015/02/14 Python
python文件操作相关知识点总结整理
2016/02/22 Python
Python使用matplotlib实现绘制自定义图形功能示例
2018/01/18 Python
Python使用python-docx读写word文档
2019/08/26 Python
python双端队列原理、实现与使用方法分析
2019/11/27 Python
python3中布局背景颜色代码分析
2020/12/01 Python
德国机场停车位比较和预订网站:Ich-parke-billiger
2018/01/08 全球购物
Joseph官网:英国小众奢侈品牌
2019/05/17 全球购物
公交公司毕业生求职信
2014/02/15 职场文书
家长会主持词
2014/03/26 职场文书
集中整治工作方案
2014/05/01 职场文书
总经理检讨书
2014/09/15 职场文书
2015年元旦主持词结束语
2014/12/14 职场文书
监考失职检讨书
2015/01/26 职场文书
复兴之路观后感3000字
2015/06/02 职场文书