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通过scapy获取局域网所有主机mac地址示例
May 04 Python
极简的Python入门指引
Apr 01 Python
简单介绍Python2.x版本中的cmp()方法的使用
May 20 Python
Python基于Floyd算法求解最短路径距离问题实例详解
May 16 Python
对pandas读取中文unicode的csv和添加行标题的方法详解
Dec 12 Python
python通过TimedRotatingFileHandler按时间切割日志
Jul 17 Python
python如何保证输入键入数字的方法
Aug 23 Python
python实现按首字母分类查找功能
Oct 31 Python
Python jieba库用法及实例解析
Nov 04 Python
python日期与时间戳的各种转换示例
Feb 12 Python
Keras使用ImageNet上预训练的模型方式
May 23 Python
python可视化大屏库big_screen示例详解
Nov 23 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连接Oracle for NT 远程数据库
2006/10/09 PHP
一个从别的网站抓取信息的例子(域名查询)
2006/10/09 PHP
一个改进的UBB类
2006/10/09 PHP
php 伪造本地文件包含漏洞的代码
2011/11/03 PHP
如何把php5.3版本升级到php5.4或者php5.5
2015/07/31 PHP
关于laravel后台模板laravel-admin select框的使用详解
2019/10/03 PHP
BOOM vs RR BO5 第一场 2.14
2021/03/10 DOTA
jQuery UI 应用不同Theme的办法
2010/09/12 Javascript
基于jquery的修改当前TAB显示标题的代码
2010/12/11 Javascript
javascript中运用闭包和自执行函数解决大量的全局变量问题
2010/12/30 Javascript
在浏览器中获取当前执行的脚本文件名的代码
2011/07/19 Javascript
jquery事件preventDefault()方法用法实例
2015/01/16 Javascript
javascript中Date()函数在各浏览器中的显示效果
2015/06/18 Javascript
javascript+HTML5自定义元素播放焦点图动画
2016/02/21 Javascript
js H5 canvas投篮小游戏
2016/08/18 Javascript
WEB前端实现裁剪上传图片功能
2016/10/17 Javascript
Vue.js第四天学习笔记(组件)
2016/12/02 Javascript
JavaScript用构造函数如何获取变量的类型名
2016/12/23 Javascript
微信小程序之 catalog 切换实现解析
2019/09/12 Javascript
JS document内容及样式操作完整示例
2020/01/14 Javascript
uniapp实现可滑动选项卡
2020/10/21 Javascript
[03:53]2016国际邀请赛中国区预选赛第三日TOP10精彩集锦
2016/06/29 DOTA
Python GAE、Django导出Excel的方法
2008/11/24 Python
python开发之函数定义实例分析
2015/11/12 Python
Python坐标线性插值应用实现
2019/11/13 Python
python生成任意频率正弦波方式
2020/02/25 Python
HTML5中判断横屏竖屏的方法(移动端)
2016/08/04 HTML / CSS
美国眼镜网站:LensCrafters
2020/01/19 全球购物
程序集与命名空间有什么不同
2014/07/25 面试题
说一下Linux下有关用户和组管理的命令
2014/08/18 面试题
日语专业毕业生自荐信
2013/11/11 职场文书
捐款倡议书格式范文
2014/05/14 职场文书
大学新生军训自我鉴定
2014/09/18 职场文书
2014年稽查工作总结
2014/12/20 职场文书
《我要的是葫芦》教学反思
2016/02/18 职场文书
2019学校请假条格式及范文
2019/06/25 职场文书