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基于OpenCV实现视频的人脸检测
Jan 23 Python
Flask web开发处理POST请求实现(登录案例)
Jul 26 Python
django如何实现视图重定向
Jul 24 Python
python自定义时钟类、定时任务类
Feb 22 Python
基于Python的图像数据增强Data Augmentation解析
Aug 13 Python
Python检查 云备份进程是否正常运行代码实例
Aug 22 Python
Python使用matplotlib 模块scatter方法画散点图示例
Sep 27 Python
pytorch 自定义参数不更新方式
Jan 06 Python
使用python客户端访问impala的操作方式
Mar 28 Python
python如何查看安装了的模块
Jun 23 Python
python 怎样进行内存管理
Nov 10 Python
Python利用zhdate模块实现农历日期处理
Mar 31 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/01/09 PHP
php自动给网址加上链接的方法
2015/06/02 PHP
PHP下使用mysqli的函数连接mysql出现warning: mysqli::real_connect(): (hy000/1040): ...
2016/02/14 PHP
php使用变量动态创建类的对象用法示例
2017/02/06 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
2017/11/14 PHP
php 自定义函数实现将数据 以excel 表格形式导出示例
2019/11/13 PHP
JS效率个人经验谈(8-15更新),加入range技巧
2007/01/09 Javascript
超级兔子让浮动层消失的前因后果
2007/03/09 Javascript
用JQuery 实现的自定义对话框
2007/03/24 Javascript
javasciprt下jquery函数$.post执行无响应的解决方法
2014/03/13 Javascript
jQuery实现列表自动滚动循环滚动展示新闻
2014/08/22 Javascript
使用jquery解析XML示例代码
2014/09/05 Javascript
JS实现淡蓝色简洁竖向Tab点击切换效果
2015/10/06 Javascript
浅谈js中的in-for循环
2016/06/28 Javascript
超实用的javascript时间处理总结
2016/08/16 Javascript
Javascript中return的使用与闭包详解
2017/01/11 Javascript
react-native中ListView组件点击跳转的方法示例
2017/09/30 Javascript
input 标签实现输入框带提示文字效果(两种方法)
2017/10/09 Javascript
VUEJS 2.0 子组件访问/调用父组件的实例
2018/02/10 Javascript
用element的upload组件实现多图片上传和压缩的示例代码
2019/02/12 Javascript
微信小程序实现pdf、word等格式文件上传的方法
2019/09/10 Javascript
[01:02:48]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 LGD vs OG
2018/04/02 DOTA
[01:05:30]VP vs TNC 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
[57:12]完美世界DOTA2联赛循环赛 Inki vs Matador BO2第一场 10.31
2020/11/02 DOTA
Python中实现对list做减法操作介绍
2015/01/09 Python
win10下Python3.6安装、配置以及pip安装包教程
2017/10/01 Python
django Serializer序列化使用方法详解
2018/10/16 Python
Python实现K折交叉验证法的方法步骤
2019/07/11 Python
python 直接赋值和copy的区别详解
2019/08/07 Python
Java文件与类动手动脑实例详解
2019/11/10 Python
Python3常用内置方法代码实例
2019/11/18 Python
从python读取sql的实例方法
2020/07/21 Python
什么是Rollback Segment
2013/04/22 面试题
演讲稿怎么写才完美
2014/01/02 职场文书
第一批党的群众路线教育实践活动工作总结
2014/03/03 职场文书
2014年行政执法工作总结
2014/12/11 职场文书