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脚本将Bing的每日图片作为桌面的教程
May 04 Python
python运行其他程序的实现方法
Jul 14 Python
numpy中矩阵合并的实例
Jun 15 Python
numpy使用fromstring创建矩阵的实例
Jun 15 Python
python执行CMD指令,并获取返回的方法
Dec 19 Python
Python3 实现文件批量重命名示例代码
Jun 03 Python
Django Channels 实现点对点实时聊天和消息推送功能
Jul 17 Python
详解python pandas 分组统计的方法
Jul 30 Python
Python+OpenCv制作证件图片生成器的操作方法
Aug 21 Python
python自动点赞功能的实现思路
Feb 26 Python
pycharm Tab键设置成4个空格的操作
Feb 26 Python
pytorch model.cuda()花费时间很长的解决
Jun 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
用PHP的ob_start();控制您的浏览器cache!
2007/02/14 PHP
检查url链接是否已经有参数的php代码 添加 ? 或 &amp;
2010/02/09 PHP
php mongodb操作类 带几个简单的例子
2016/08/25 PHP
PHP实现链表的定义与反转功能示例
2018/06/09 PHP
php微信开发之谷歌测距
2018/06/14 PHP
使用laravel和ECharts实现折线图效果的例子
2019/10/09 PHP
编辑浪子版表单验证类
2007/05/12 Javascript
jQuery UI 实现email输入提示实例
2013/08/15 Javascript
jQuery实现点击文本框弹出热门标签的提示效果
2013/11/17 Javascript
PHP中CURL的几个经典应用实例
2015/01/23 Javascript
深入理解Vue官方文档梳理之全局API
2017/11/22 Javascript
webpack4.x打包过程详解
2018/07/18 Javascript
解决eclipse中没有js代码提示的问题
2018/10/10 Javascript
微信小程序实现form表单本地储存数据
2019/06/27 Javascript
vue通过数据过滤实现表格合并
2020/11/30 Javascript
解决echarts图表使用v-show控制图表显示不全的问题
2020/07/19 Javascript
[48:27]EG vs Liquid 2018国际邀请赛淘汰赛BO3 第二场 8.25
2018/08/29 DOTA
在Python的Flask框架中使用日期和时间的教程
2015/04/21 Python
使用Python脚本生成随机IP的简单方法
2015/07/30 Python
Python爬取APP下载链接的实现方法
2016/09/30 Python
python中模块的__all__属性详解
2017/10/26 Python
Python获取昨天、今天、明天开始、结束时间戳的方法
2018/06/01 Python
windows系统中Python多版本与jupyter notebook使用虚拟环境的过程
2019/05/15 Python
python代码打印100-999之间的回文数示例
2019/11/24 Python
沃达丰英国有限公司:Vodafone英国
2019/04/16 全球购物
临床医学专业个人的自我评价
2013/09/27 职场文书
生态学毕业生自荐信
2013/10/27 职场文书
施工班组长岗位职责
2014/01/05 职场文书
寄语十八大感言
2014/02/07 职场文书
超市创意活动方案
2014/08/15 职场文书
竞选班干部演讲稿400字
2014/08/20 职场文书
2014年检验员工作总结
2014/11/19 职场文书
高校自主招生自荐信2015
2015/03/04 职场文书
花田少年史观后感
2015/06/16 职场文书
Python编程根据字典列表相同键的值进行合并
2021/10/05 Python
剧场版《转生恶役只好拔除破灭旗标》公开最新视觉图 2023年上映
2022/04/02 日漫