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中获取网页状态码的两个方法
Nov 03 Python
Django实现图片文字同时提交的方法
May 26 Python
Python正则表达式使用范例分享
Dec 04 Python
简单谈谈Python中的json与pickle
Jul 19 Python
Python使用SQLite和Excel操作进行数据分析
Jan 20 Python
python抓取网站的图片并下载到本地的方法
May 22 Python
浅谈Python3中strip()、lstrip()、rstrip()用法详解
Apr 29 Python
pytorch 加载(.pth)格式的模型实例
Aug 20 Python
检测tensorflow是否使用gpu进行计算的方式
Feb 03 Python
Python 找出出现次数超过数组长度一半的元素实例
May 11 Python
Matplotlib中%matplotlib inline如何使用
Jul 28 Python
Python实现查询剪贴板自动匹配信息的思路详解
Jul 09 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脚本过滤用户上传的图片
2015/07/03 PHP
php 人员权限管理(RBAC)实例(推荐)
2017/05/24 PHP
IE与firefox下Dhtml的一些区别小结
2009/12/02 Javascript
TimergliderJS 一个基于jQuery的时间轴插件
2011/12/07 Javascript
JS之Date对象和获取系统当前时间详解
2014/01/13 Javascript
JS创建对象几种不同方法详解
2016/03/01 Javascript
JavaScript关于提高网站性能的几点建议(一)
2016/07/24 Javascript
JavaScript实现DOM对象选择器
2016/09/24 Javascript
详解自动生成博客目录案例
2016/12/09 Javascript
JS实现京东首页之页面顶部、Logo和搜索框功能
2017/01/12 Javascript
基于Bootstrap的Java开发问题汇总(Spring MVC)
2017/01/15 Javascript
ES5学习教程之Array对象
2017/04/01 Javascript
js数组方法reduce经典用法代码分享
2018/01/07 Javascript
解决vue select当前value没有更新到vue对象属性的问题
2018/08/30 Javascript
使用watch在微信小程序中实现全局状态共享
2019/06/03 Javascript
Vue循环中多个input绑定指定v-model实例
2020/08/31 Javascript
JS删除对象中某一属性案例详解
2020/09/08 Javascript
python使用7z解压软件备份文件脚本分享
2014/02/21 Python
Python实现类似jQuery使用中的链式调用的示例
2016/06/16 Python
Python实现对百度云的文件上传(实例讲解)
2017/10/21 Python
Python+Turtle动态绘制一棵树实例分享
2018/01/16 Python
Python 堆叠柱状图绘制方法
2019/07/29 Python
Django--权限Permissions的例子
2019/08/28 Python
django框架F&amp;Q 聚合与分组操作示例
2019/12/12 Python
tensorflow 分类损失函数使用小记
2020/02/18 Python
Python基于locals返回作用域字典
2020/10/17 Python
python3中for循环踩过的坑记录
2020/12/14 Python
浅析python实现动态规划背包问题
2020/12/31 Python
英国领先的男装设计师服装独立零售商:Repertoire Fashion
2020/10/19 全球购物
个人自我鉴定怎么写
2013/10/28 职场文书
科学育儿宣传标语
2014/10/08 职场文书
考试作弊检讨书范文
2015/01/27 职场文书
材料员岗位职责
2015/02/10 职场文书
企业团队精神心得体会
2016/01/19 职场文书
导游词之海南-南湾猴岛
2019/10/12 职场文书
python库Tsmoothie模块数据平滑化异常点抓取
2022/06/10 Python