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 相关文章推荐
python获取mp3文件信息的方法
Jun 15 Python
python高效过滤出文件夹下指定文件名结尾的文件实例
Oct 21 Python
django 外键model的互相读取方法
Dec 15 Python
Python requests模块实例用法
Feb 11 Python
Python 继承,重写,super()调用父类方法操作示例
Sep 29 Python
浅析Python面向对象编程
Jul 10 Python
Python 防止死锁的方法
Jul 29 Python
Python unittest装饰器实现原理及代码
Sep 08 Python
Python求区间正整数内所有素数之和的方法实例
Oct 13 Python
python自动化发送邮件实例讲解
Jan 04 Python
关于探究python中sys.argv时遇到的问题详解
Feb 23 Python
详解python的异常捕获
Mar 03 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
PHP中static关键字原理的学习研究分析
2011/07/18 PHP
php数组编码转换示例详解
2014/03/11 PHP
捕获关闭窗口的脚本
2009/01/10 Javascript
ExtJs的Date格式字符代码
2010/12/30 Javascript
js 完美图片新闻轮转效果,腾讯大粤网首页图片轮转改造而来
2011/11/21 Javascript
jQuery Mobile 导航栏代码
2013/11/01 Javascript
jQuery 插件开发指南
2014/11/14 Javascript
JavaScript中document对象使用详解
2015/01/06 Javascript
JavaScript事件委托用法分析
2015/01/24 Javascript
Jquery 实现图片轮换
2015/01/28 Javascript
JavaScript DOM元素尺寸和位置
2015/04/13 Javascript
jQuery绑定事件监听bind和移除事件监听unbind用法实例详解
2016/01/19 Javascript
JS实现重新加载当前页面
2016/11/29 Javascript
jQuery插件FusionCharts绘制的2D双面积图效果示例【附demo源码】
2017/04/11 jQuery
详解探索 vuex 2.0 以及使用 vuejs 2.0 + vuex 2.0 构建记事本应用
2017/06/16 Javascript
使用JS实现气泡跟随鼠标移动的动画效果
2017/09/16 Javascript
nodejs简单访问及操作mysql数据库的方法示例
2018/03/15 NodeJs
layui弹出层按钮提交iframe表单的方法
2018/08/20 Javascript
微信小程序全局变量功能与用法详解
2019/01/22 Javascript
纯js+css实现在线时钟
2020/08/18 Javascript
[00:27]DOTA2次级职业联赛 - Lilith战队宣传片
2014/12/01 DOTA
[02:51]DOTA2 Supermajor小组分组对阵抽签仪式
2018/06/01 DOTA
将TensorFlow的模型网络导出为单个文件的方法
2018/04/23 Python
Python编程在flask中模拟进行Restful的CRUD操作
2018/12/28 Python
python快排算法详解
2019/03/04 Python
python判断文件夹内是否存在指定后缀文件的实例
2019/06/10 Python
Python版中国省市经纬度
2020/02/11 Python
浅谈Python 命令行参数argparse写入图片路径操作
2020/07/12 Python
python 判断一组数据是否符合正态分布
2020/09/23 Python
Python+Appium实现自动化清理微信僵尸好友的方法
2021/02/04 Python
Kiwi.com中国:找到特价机票并发现新目的地
2019/10/27 全球购物
大学生专科学习生活的自我评价
2013/12/07 职场文书
高等教育专业自荐信范文
2014/03/26 职场文书
成立公司计划书
2014/05/07 职场文书
中班下学期个人总结
2015/02/12 职场文书
学校运动会感想
2015/08/10 职场文书