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数据结构之二叉树的遍历实例
Apr 29 Python
Python实现Pig Latin小游戏实例代码
Feb 02 Python
Python实现一个服务器监听多个客户端请求
Apr 12 Python
Pandas 数据处理,数据清洗详解
Jul 10 Python
对python的unittest架构公共参数token提取方法详解
Dec 17 Python
Python如何爬取实时变化的WebSocket数据的方法
Mar 09 Python
python flask几分钟实现web服务的例子
Jul 26 Python
python中matplotlib条件背景颜色的实现
Sep 02 Python
Python浮点型(float)运算结果不正确的解决方案
Sep 22 Python
PyCharm 解决找不到新打开项目的窗口问题
Jan 15 Python
python基于机器学习预测股票交易信号
May 25 Python
python自动化操作之动态验证码、滑动验证码的降噪和识别
Aug 30 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
外媒评选出10支2020年最受欢迎的Dota2战队
2021/03/05 DOTA
php获得文件扩展名三法
2006/11/25 PHP
dhtmlxTree目录树增加右键菜单以及拖拽排序的实现方法
2013/04/26 PHP
ThinkPHP提交表单时默认自动转义的解决方法
2014/11/25 PHP
PHP中把对象数组转换成普通数组的方法
2015/07/10 PHP
学习JavaScript的最佳方法分享
2011/10/21 Javascript
网站如何做到完全不需要jQuery也可以满足简单需求
2013/06/27 Javascript
js动态添加表格数据使用insertRow和insertCell实现
2014/05/22 Javascript
jQuery+ajax实现无刷新级联菜单示例
2015/05/21 Javascript
jquery ajax 如何向jsp提交表单数据
2015/08/23 Javascript
JS获取url参数、主域名的方法实例分析
2016/08/03 Javascript
浅谈AngularJs指令之scope属性详解
2016/10/24 Javascript
vue里面使用mui的弹出日期选择插件实例
2018/09/16 Javascript
JavaScript实现简单贪吃蛇效果
2020/03/09 Javascript
jQuery实现穿梭框效果
2021/01/19 jQuery
处理Python中的URLError异常的方法
2015/04/30 Python
Python爬虫框架Scrapy实例代码
2018/03/04 Python
python统计字母、空格、数字等字符个数的实例
2018/06/29 Python
Python logging模块用法示例
2018/08/28 Python
pandas DataFrame索引行列的实现
2019/06/04 Python
Python 获取ftp服务器文件时间的方法
2019/07/02 Python
python 如何将数据写入本地txt文本文件的实现方法
2019/09/11 Python
windows中安装Python3.8.0的实现方法
2019/11/19 Python
python使用列表的最佳方案
2020/08/12 Python
劳动实践课感言
2014/02/01 职场文书
实习会计求职自荐信范文
2014/03/10 职场文书
校园元旦活动总结
2014/07/09 职场文书
技术经济专业求职信
2014/09/03 职场文书
银行柜员与客户起冲突检讨书
2014/09/27 职场文书
2014年社区妇联工作总结
2014/12/02 职场文书
黄山导游词
2015/01/31 职场文书
2015年乡镇纪检工作总结
2015/04/22 职场文书
行政处罚决定书
2015/06/24 职场文书
2016高考寄语或鼓励的话语
2015/12/04 职场文书
2016学雷锋优秀志愿者事迹材料
2016/02/25 职场文书
Vue router配置与使用分析讲解
2022/12/24 Vue.js