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中的多线程实例教程
Aug 27 Python
Python实现将DOC文档转换为PDF的方法
Jul 25 Python
Python 对输入的数字进行排序的方法
Jun 23 Python
Python中的函数式编程:不可变的数据结构
Oct 08 Python
深入浅析Python2.x和3.x版本的主要区别
Nov 30 Python
python3.6数独问题的解决
Jan 21 Python
Python3利用Dlib实现摄像头实时人脸检测和平铺显示示例
Feb 21 Python
python 求1-100之间的奇数或者偶数之和的实例
Jun 11 Python
python 下 CMake 安装配置 OPENCV 4.1.1的方法
Sep 30 Python
python输出数组中指定元素的所有索引示例
Dec 06 Python
Python实现微信好友的数据分析
Dec 16 Python
Python PIL按比例裁剪图片
May 11 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
模板引擎Smarty深入浅出介绍
2006/12/06 PHP
php打开文件fopen函数的使用说明
2013/07/05 PHP
php强制运行广告的方法
2014/12/01 PHP
laravel添加前台跳转成功页面示例
2019/10/22 PHP
JavaScript的setAttribute兼容性问题解决方法
2013/11/11 Javascript
javascript中数组方法汇总
2015/07/07 Javascript
jquery mobile界面数据刷新的实现方法
2016/05/28 Javascript
jQuery基于ajax方式实现用户名存在性检查功能示例
2017/02/10 Javascript
详解angular ui-grid之过滤器设置
2017/06/07 Javascript
vue+webpack 打包文件 404 页面空白的解决方法
2018/02/28 Javascript
Iview Table组件中各种组件扩展的使用
2018/10/20 Javascript
巧妙运用v-model实现父子组件传值的方法示例
2019/04/07 Javascript
Vue的click事件防抖和节流处理详解
2019/11/13 Javascript
基于vuex实现购物车功能
2021/01/10 Vue.js
[41:12]Liquid vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.24
2019/09/10 DOTA
浅谈Python的垃圾回收机制
2016/12/17 Python
浅谈function(函数)中的动态参数
2017/04/30 Python
对Python 除法负数取商的取整方式详解
2018/12/12 Python
Python+selenium点击网页上指定坐标的实例
2019/07/05 Python
python 一篇文章搞懂装饰器所有用法(建议收藏)
2019/08/23 Python
Python pandas RFM模型应用实例详解
2019/11/20 Python
python装饰器的特性原理详解
2019/12/25 Python
Python实现钉钉订阅消息功能
2020/01/14 Python
详解python 破解网站反爬虫的两种简单方法
2020/02/09 Python
新手入门学习python Numpy基础操作
2020/03/02 Python
Selenium常见异常解析及解决方案示范
2020/04/10 Python
在阿尔卑斯山或希腊度过快乐假期:Alpine Elements
2019/12/28 全球购物
会计电算化应届生求职信
2013/11/03 职场文书
大二自我鉴定
2014/01/31 职场文书
企业业务员岗位职责
2014/03/14 职场文书
舞蹈教育学专业自荐信
2014/06/15 职场文书
党政领导班子群众路线对照检查材料
2014/10/26 职场文书
2014年财政所工作总结
2014/11/22 职场文书
尊师重教主题班会
2015/08/14 职场文书
go xorm框架的使用
2021/05/22 Golang
golang三种设计模式之简单工厂、方法工厂和抽象工厂
2022/04/10 Golang