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实现控制台输入密码的方法
May 29 Python
将Python代码嵌入C++程序进行编写的实例
Jul 31 Python
Python实现的弹球小游戏示例
Aug 01 Python
小白如何入门Python? 制作一个网站为例
Mar 06 Python
python实现定时发送qq消息
Jan 18 Python
Python使用百度api做人脸对比的方法
Aug 28 Python
python实现从ftp服务器下载文件
Mar 03 Python
Python 批量读取文件中指定字符的实现
Mar 06 Python
Windows+Anaconda3+PyTorch+PyCharm的安装教程图文详解
Apr 03 Python
Python爬虫简单运用爬取代理IP的实现
Dec 01 Python
python 模块重载的五种方法
Apr 24 Python
python 进阶学习之python装饰器小结
Sep 04 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中数据库连接方式pdo和mysqli对比分析
2015/02/25 PHP
php array_walk 对数组中的每个元素应用用户自定义函数详解
2016/11/18 PHP
PHP defined()函数的使用图文详解
2019/07/20 PHP
Laravel Reponse响应客户端示例详解
2020/09/03 PHP
JQUERY操作JSON实例代码
2010/02/09 Javascript
修复ie8&amp;chrome下window的resize事件多次执行
2011/10/20 Javascript
js图片向右一张张滚动效果实例代码
2013/11/23 Javascript
JQuery插件ajaxfileupload.js异步上传文件实例
2015/05/19 Javascript
JavaScript中数据结构与算法(一):栈
2015/06/19 Javascript
JS实现title标题栏文字不间断滚动显示效果
2016/09/07 Javascript
详解Vue监听数据变化原理
2017/03/08 Javascript
Node.js通过身份证号验证年龄、出生日期与性别方法示例
2017/03/09 Javascript
node.js+captchapng+jsonwebtoken实现登录验证示例
2017/08/17 Javascript
详解node服务器中打开html文件的两种方法
2017/09/18 Javascript
解决Vue使用mint-ui loadmore实现上拉加载与下拉刷新出现一个页面使用多个上拉加载后冲突问题
2017/11/07 Javascript
微信小程序之下拉列表实现方法解析(附完整源码)
2019/08/23 Javascript
JavaScript实现简易聊天对话框(加滚动条)
2020/02/10 Javascript
使用vue实现通过变量动态拼接url
2020/07/22 Javascript
在vue中使用console.log无效的解决
2020/08/09 Javascript
Element-ui 自带的两种远程搜索(模糊查询)用法讲解
2021/01/29 Javascript
[01:01:22]VGJ.S vs OG 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
纯Python开发的nosql数据库CodernityDB介绍和使用实例
2014/10/23 Python
python实现红包裂变算法
2016/02/16 Python
Python如何读取MySQL数据库表数据
2017/03/11 Python
一个基于flask的web应用诞生 用户注册功能开发(5)
2017/04/11 Python
python pip源配置,pip配置文件存放位置的方法
2019/07/12 Python
详解mac python+selenium+Chrome 简单案例
2019/11/08 Python
详解CSS3选择器的使用方法汇总
2015/11/24 HTML / CSS
css3 实现元素弧线运动的示例代码
2020/04/24 HTML / CSS
Radley英国官网:英国莱德利小狗包
2019/03/21 全球购物
美国知名的隐形眼镜电商:Contacts America
2019/11/19 全球购物
岗位职责的含义
2013/11/17 职场文书
信用卡工资证明范本
2014/10/17 职场文书
解放思想大讨论活动总结
2015/05/09 职场文书
员工考勤管理制度
2015/08/06 职场文书
Netty分布式客户端处理接入事件handle源码解析
2022/03/25 Java/Android