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实现端口复用实例代码
Jul 03 Python
Python中的数据对象持久化存储模块pickle的使用示例
Mar 03 Python
python结合selenium获取XX省交通违章数据的实现思路及代码
Jun 26 Python
在 Python 应用中使用 MongoDB的方法
Jan 05 Python
Python2.7基于淘宝接口获取IP地址所在地理位置的方法【测试可用】
Jun 07 Python
Python对字符串实现去重操作的方法示例
Aug 11 Python
python验证码识别教程之灰度处理、二值化、降噪与tesserocr识别
Jun 04 Python
Python3多进程 multiprocessing 模块实例详解
Jun 11 Python
78行Python代码实现现微信撤回消息功能
Jul 26 Python
pygame游戏之旅 游戏中添加显示文字
Nov 20 Python
python 实现非极大值抑制算法(Non-maximum suppression, NMS)
Oct 15 Python
python读取pdf格式文档的实现代码
Apr 01 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
相对路径转化成绝对路径
2007/04/10 PHP
用php或asp创建网页桌面快捷方式的代码
2010/03/23 PHP
PHP CURL模拟登录新浪微博抓取页面内容 基于EaglePHP框架开发
2012/01/16 PHP
Yii配置文件用法详解
2014/12/04 PHP
php上传文件问题汇总
2015/01/30 PHP
PHP处理二进制数据的实现方法
2016/06/13 PHP
PHP封装的PDO数据库操作类实例
2017/06/21 PHP
Laravel如何使用数据库事务及捕获事务失败后的异常详解
2017/10/23 PHP
javascript 读取XML数据,在页面中展现、编辑、保存的实现
2009/10/27 Javascript
jquery实现不同大小浏览器使用不同的css样式表的方法
2014/04/02 Javascript
js实现新年倒计时效果
2015/12/10 Javascript
详解AngularJS中的filter过滤器用法
2016/01/04 Javascript
WordPress 单页面上一页下一页的实现方法【附代码】
2016/03/10 Javascript
前端微信支付js代码
2016/07/25 Javascript
详解nodejs中的process进程
2017/03/19 NodeJs
vue.js删除动态绑定的radio的指定项
2017/06/02 Javascript
VueJS组件之间通过props交互及验证的方式
2017/09/04 Javascript
angular 服务的单例模式(依赖注入模式下)详解
2018/10/22 Javascript
微信小程序获取用户信息并保存登录状态详解
2019/05/10 Javascript
vue v-for 使用问题整理小结
2019/08/04 Javascript
JQuery表单元素取值赋值方法总结
2020/05/12 jQuery
[48:30]LGD vs infamous Supermajor小组赛D组 BO3 第一场 6.3
2018/06/04 DOTA
[40:12]Liquid vs Chaos 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
[01:02:04]EG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
Python中的tuple元组详细介绍
2015/02/02 Python
python类的继承实例详解
2017/03/30 Python
python email smtplib模块发送邮件代码实例
2018/04/26 Python
Python GUI Tkinter简单实现个性签名设计
2018/06/19 Python
OpenCV 轮廓检测的实现方法
2019/07/03 Python
Python GUI编程学习笔记之tkinter中messagebox、filedialog控件用法详解
2020/03/30 Python
详解H5本地储存Web Storage
2017/07/03 HTML / CSS
土耳其国际性时尚购物网站:Modanisa
2018/01/19 全球购物
班组长安全生产职责
2013/12/16 职场文书
2014年法制宣传日活动方案
2014/11/02 职场文书
《绝招》教学反思
2016/02/20 职场文书
一文搞懂Redis中String数据类型
2022/04/03 Redis