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实现带错误处理功能的远程文件读取方法
Apr 29 Python
Python将图片批量从png格式转换至WebP格式
Aug 22 Python
微信跳一跳小游戏python脚本
Jan 05 Python
python 按不同维度求和,最值,均值的实例
Jun 28 Python
python中pika模块问题的深入探究
Oct 13 Python
python print输出延时,让其立刻输出的方法
Jan 07 Python
纯python进行矩阵的相乘运算的方法示例
Jul 17 Python
python列表插入append(), extend(), insert()用法详解
Sep 14 Python
python hashlib加密实现代码
Oct 17 Python
浅谈pytorch torch.backends.cudnn设置作用
Feb 20 Python
python怎么删除缓存文件
Jul 19 Python
python用opencv 图像傅里叶变换
Jan 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
收集的DedeCMS一些使用经验
2007/03/17 PHP
php旋转图片90度的方法
2013/11/07 PHP
Thinkphp实现站点静态化的方法详解
2017/03/21 PHP
php解决crontab定时任务不能写入文件问题的方法分析
2019/09/16 PHP
关于js获取radio和select的属性并控制的代码
2011/05/12 Javascript
解决js正则匹配换行问题实现代码
2012/12/10 Javascript
JS中Date日期函数中的参数使用介绍
2014/01/02 Javascript
引入JS文件IE6报语法错误或缺少对象问题的解决方法
2014/01/09 Javascript
js过滤特殊字符输入适合输入、粘贴、拖拽多种情况
2014/03/22 Javascript
jquery中ajax处理跨域的三大方式
2016/01/05 Javascript
微信小程序 sha1 实现密码加密实例详解
2017/07/06 Javascript
vue观察模式浅析
2018/09/25 Javascript
nodejs中request库使用HTTPS代理的方法
2019/04/30 NodeJs
详解vue-cli项目开发/生产环境代理实现跨域请求
2019/07/23 Javascript
vue中uni-app 实现小程序登录注册功能
2019/10/12 Javascript
谈谈IntersectionObserver懒加载的具体使用
2019/10/15 Javascript
JavaScript检测浏览器是否支持CSS变量代码实例
2020/04/03 Javascript
JavaScript基于用户照片姓名生成海报
2020/05/29 Javascript
js实现炫酷光感效果
2020/09/05 Javascript
[48:11]完美世界DOTA2联赛 Magma vs GXR 第二场 11.07
2020/11/10 DOTA
[01:07:02]DOTA2-DPC中国联赛 正赛 iG vs PSG.LGD BO3 第三场 2月26日
2021/03/11 DOTA
Python的装饰器模式与面向切面编程详解
2015/06/21 Python
python脚本内运行linux命令的方法
2015/07/02 Python
django富文本编辑器的实现示例
2019/04/10 Python
python抓取需要扫微信登陆页面
2019/04/29 Python
selenium+python环境配置教程详解
2019/05/28 Python
python求质数列表的例子
2019/11/24 Python
Python collections.defaultdict模块用法详解
2020/06/18 Python
Python爬虫开发与项目实战
2020/12/16 Python
python中用ggplot绘制画图实例讲解
2021/01/26 Python
Java如何读取CLOB字段
2013/10/10 面试题
体育教师自我鉴定
2014/02/12 职场文书
消防工作实施方案
2014/06/09 职场文书
2014年大学生职业规划书:未来不是梦,只要勇敢冲!
2014/09/22 职场文书
2016关于预防职务犯罪的心得体会
2016/01/21 职场文书
使用Java去实现超市会员管理系统
2022/03/18 Java/Android