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获取服务器信息的最简单实现方法
Mar 05 Python
pygame学习笔记(4):声音控制
Apr 15 Python
Python使用面向对象方式创建线程实现12306售票系统
Dec 24 Python
深入理解Python中的内置常量
May 20 Python
详解Python开发中如何使用Hook技巧
Nov 01 Python
python的exec、eval使用分析
Dec 11 Python
python 表格打印代码实例解析
Oct 12 Python
8段用于数据清洗Python代码(小结)
Oct 31 Python
python字符串的index和find的区别详解
Jun 20 Python
Ubuntu权限不足无法创建文件夹解决方案
Nov 14 Python
python自动统计zabbix系统监控覆盖率的示例代码
Apr 03 Python
聊聊Python中关于a=[[]]*3的反思
Jun 02 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
使用adodb lite解决问题
2006/12/31 PHP
PHP 可阅读随机字符串代码
2010/05/26 PHP
PHP+Mysql+jQuery实现发布微博程序 jQuery篇
2011/10/08 PHP
PHP基于单例模式实现的mysql类
2016/01/09 PHP
Javascript注入技巧
2007/06/22 Javascript
点图片上一页下一页翻页效果
2008/07/09 Javascript
jQuery(1.3.2) 7行代码搞定跟随屏幕滚动的层
2009/05/21 Javascript
Javascript的并行运算实现代码
2010/11/19 Javascript
Prototype源码浅析 String部分(四)之补充
2012/01/16 Javascript
jquery创建一个新的节点对象(自定义结构/内容)的好方法
2013/01/21 Javascript
基于jquery编写的横向自适应幻灯片切换特效的实例代码
2013/08/06 Javascript
JavaScript获取某年某月的最后一天附截图
2014/06/23 Javascript
三种取消选中单选框radio的方法
2014/09/09 Javascript
关于JS中的方法是否加括号的问题
2016/07/27 Javascript
JavaScript中对象的不同创建方法
2016/08/12 Javascript
js a标签点击事件
2017/03/30 Javascript
React实践之Tree组件的使用方法
2017/09/30 Javascript
Vue 实现登录界面验证码功能
2020/01/03 Javascript
编写Python脚本来实现最简单的FTP下载的教程
2015/05/04 Python
Pycharm学习教程(2) 代码风格
2017/05/02 Python
Python使用jsonpath-rw模块处理Json对象操作示例
2018/07/31 Python
Python调用百度根据经纬度查询地址的示例代码
2019/07/07 Python
时尚的CSS3进度条效果
2012/02/22 HTML / CSS
CSS3中引入多种自定义字体font-face
2020/06/12 HTML / CSS
HTML5+CSS3实现机器猫
2016/10/17 HTML / CSS
理肤泉俄罗斯官网:La Roche-Posay俄罗斯
2018/07/24 全球购物
能否解释一下XSS cookie盗窃是什么意思
2012/06/02 面试题
数控专业推荐信范文
2013/12/02 职场文书
2014教育局对照检查材料思想汇报
2014/09/23 职场文书
公务员四风问题对照检查材料整改措施
2014/09/26 职场文书
防火标语大全
2014/10/06 职场文书
党的群众路线教育实践活动督导组工作情况汇报
2014/10/28 职场文书
幼儿园小班个人总结
2015/02/12 职场文书
Java常用工具类汇总 附示例代码
2021/06/26 Java/Android
教你使用一行Python代码玩遍童年的小游戏
2021/08/23 Python
Python 图片添加美颜效果
2022/04/28 Python