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的自动化部署模块Fabric的安装及使用指南
Jan 19 Python
浅谈python中的数字类型与处理工具
Aug 02 Python
python放大图片和画方格实现算法
Mar 30 Python
解决phantomjs截图失败,phantom.exit位置的问题
May 17 Python
python画图--输出指定像素点的颜色值方法
Jul 03 Python
django 环境变量配置过程详解
Aug 06 Python
Python input函数使用实例解析
Nov 22 Python
python 链接sqlserver 写接口实例
Mar 11 Python
python实现最短路径的实例方法
Jul 19 Python
Python 使用SFTP和FTP实现对服务器的文件下载功能
Dec 17 Python
Python torch.flatten()函数案例详解
Aug 30 Python
Python写情书? 10行代码展示如何把情书写在她的照片里
Apr 21 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日历程序
2006/12/06 PHP
利用php获取服务器时间的实现代码
2013/06/07 PHP
利用php下载xls文件(自己动手写的)
2014/04/18 PHP
php约瑟夫问题解决关于处死犯人的算法
2015/03/23 PHP
php动态函数调用方法
2015/05/21 PHP
PHP检查网站是否宕机的方法示例
2017/07/24 PHP
JS 建立对象的方法
2007/04/21 Javascript
JS对URL字符串进行编码/解码分析
2008/10/25 Javascript
关于js日期转化为毫秒数“节省20%的效率和和节省9个字符“问题
2012/03/01 Javascript
JavaScript中join()方法的使用简介
2015/06/09 Javascript
ECMAScript6中Map/WeakMap详解
2015/06/12 Javascript
浅谈使用MVC模式进行JavaScript程序开发
2015/11/10 Javascript
JavaScript与HTML的结合方法详解
2015/11/23 Javascript
分享有关jQuery中animate、slide、fade等动画的连续触发、滞后反复执行的bug
2016/01/10 Javascript
使用jQuery实现Web页面换肤功能的要点解析
2016/05/12 Javascript
React实现点击删除列表中对应项
2017/01/10 Javascript
VUE axios上传图片到七牛的实例代码
2017/07/28 Javascript
vue.js组件vue-waterfall-easy实现瀑布流效果
2017/08/22 Javascript
Vue3.x源码调试的实现方法
2019/10/13 Javascript
Js实现复选框的全选、全不选反选功能代码实例
2020/02/28 Javascript
利用Django提供的ModelForm增删改数据的方法
2019/01/06 Python
详解Python 切片语法
2019/06/10 Python
Python对接六大主流数据库(只需三步)
2019/07/31 Python
python2和python3实现在图片上加汉字的方法
2019/08/22 Python
将pytorch转成longtensor的简单方法
2020/02/18 Python
Python3爬虫里关于Splash负载均衡配置详解
2020/07/10 Python
澳大利亚游乐场设备品牌:Lifespan Kids
2019/05/24 全球购物
电焊工工作岗位职责
2014/02/06 职场文书
银行求职信范文
2014/05/26 职场文书
大学新闻系自荐书
2014/05/31 职场文书
负责人任命书范本
2014/06/04 职场文书
党员教师群众路线个人整改措施
2014/10/28 职场文书
幼儿园中秋节活动总结
2015/03/23 职场文书
广告公司文案策划岗位职责
2015/04/14 职场文书
2016大学军训通讯稿
2015/11/25 职场文书
Python中的 enumerate和zip详情
2022/05/30 Python