转载:optparse模块OptionParser学习

optparse是专门用来在命令行添加选项的一个模块。

首先来看一段示例代码


from optparse import OptionParser

MSG_USAGE = "myprog[ -f ][-s ] arg1[,arg2..]"

optParser = OptionParser(MSG_USAGE)

optParser.add_option("-f","--file",action = "store",type="string",dest = "fileName")

ooptParser.add_option("-v","--vison", action="store_false", dest="verbose",default=‘gggggg‘,

help="make lots of noise [default]")

fakeArgs = [‘-f‘,‘file.txt‘,‘-v‘,‘good luck to you‘, ‘arg2‘, ‘arge‘]

options, args = optParser.parse_args(fakeArgs)

print options.fileName

print options.verbose

print options

print args

print optParser.print_help()

 

输入结果为


file.txt

False

{‘verbose‘: False, ‘fileName‘: ‘file.txt‘}

[‘this is some what‘, ‘arg2‘, ‘arge‘]

Usage: myprog[ -f ][-s ] arg1[,arg2..]

Options:

-h, --help            show this help message and exit

-f FILENAME, --file=FILENAME

-v, --vison           make lots of noise [default]

 

 

基本使用步骤

1、 产生一个OptionParser的物件optParse。传入的值MSG_USAGE可被调用打印命令时显示出来。


MSG_USAGE = "myprog[ -f ][-s ] arg1[,arg2..]"

optParser = OptionParser(MSG_USAGE)

2、 调用OptionParser.add_option()添加选项


optParser.add_option("-f","--file",action = "store",type = "string",dest = "fileName")

optParser.add_option("-v","--vison", action="store_false", dest="verbose",default=‘gggggg‘,

help="make lots of noise [default]")

add_option()参数说明:

action:存储方式,分为三种store、store_false、store_true

type:类型(我也不知道什么的类型)

dest:存储的变量

default:默认值

help:帮助信息

3、 调用OptionParser.parse_args()剖析并返回一个directory和一个list。


fakeArgs = [‘-f‘,‘file.txt‘,‘-v‘,‘good luck to you‘, ‘arg2‘, ‘arge‘]

options, args = optParser.parse_args(fakeArgs)

print options.fileName

print options.verbose

print options

print args

输出结果


file.txt

False

{‘verbose‘: False, ‘fileName‘: ‘file.txt‘}

[‘this is some what‘, ‘arg2‘, ‘arge‘]

parse_args()说明:

如果没有传入参加,parse_args会默认将sys.argv[1:]的值作为默认参数。这里我们将   fakeArgs模拟输入的值。

从返回结果中可以看到,

l     options为是一个directory,它的内容fakeArgs为“参数/值 ”的键值对。

l     args 是一个list,它的内容是fakeargs除去options后,剩余的输入内容。

l     options.version和options.fileName都取到与options中的directory的值。

4、 调用OptionParser.optParser.print_help()输出帮助信息


optParser.print_help()

显示返回结果


Usage: myprog[ -f ][-s ] arg1[,arg2..]

Options:

-h, --help            show this help message and exit

-f FILENAME, --file=FILENAME

-v, --vison           make lots of noise [default]

optParser.print_help()说明:

1、最开始的的MSG_USAGE的值:在这个地方显示出来了。

2、自动添加了-h这个参数。

注:在MSG_USAGE中如果使用%prog,会被自动解析为sys.args[0] 也就是文件名。如将,MSG_USAGE = "%prog [options] arg1 arg2",假如文件名为   filexx,那么出现在help中的

信息就是" filexx[options] arg1 arg2"。

 

 

深入分析

OptionParser.add_option()

例:optParser.add_option("-v","--vison", action="store_false", dest="verbose",default=‘gggggg‘,

help="make lots of noise [default]")

参数action:

存储方式,分为三种store、store_false、store_true。

下面分别对三种方式进行说明:

第一种:action = "store"

1、如果输入的参数fakeArgs中存在"-v",则verbose返回的值为fakeArgs中的紧跟‘-v‘的数,即"good luck to you"。这也正好options中的键值对应,剩下配对的参数都传给了args。请见以下代码


optParser.add_option("-f","--file",action = "store",type = "string",dest = "fileName")

optParser.add_option("-v","--vison", action="store", dest="verbose")

fakeArgs = [‘-f‘,‘file.txt‘,‘-v‘,‘good luck to you‘, ‘arg2‘, ‘arge‘]

options, args = optParser.parse_args(fakeArgs)

print optParse.verbose

print options

print args

输入结果


good luck to you

{‘verbose‘: ‘good luck to you‘, ‘fileName‘: ‘file.txt‘}

[‘arg2‘, ‘arge‘]

2、如果输入的参数fakeArgs中不存在"-v",则verbose的返回值为None。

示例代码:


optParser.add_option("-f","--file",action = "store",type = "string",dest = "fileName")

optParser.add_option("-v","--vison", action="store", dest="verbose")

fakeArgs = [‘-f‘,‘file.txt‘,‘good luck to you‘, ‘arg2‘, ‘arge‘]

options, args = optParser.parse_args(fakeArgs)

print optParse.verbose

print options

print args

输出结果


None

{‘verbose‘: None, ‘fileName‘: ‘file.txt‘}

[‘good luck to you‘, ‘arg2‘, ‘arge‘]

第二种:action = "store_true"

1、fakeArgs中存在‘-v‘,verbose将会返回True而不是"good luck to you"。意思就是说verbose的值与‘-v‘

的后一位无关,只与‘-v‘存不存在就关。

示例代码


optParser.add_option("-f","--file",action = "store",type = "string",dest = "fileName")

optParser.add_option("-v","--vison", action="store_true", dest="verbose")

fakeArgs = [‘-f‘,‘file.txt‘,‘-v‘,‘good luck to you‘, ‘arg2‘, ‘arge‘]

options, args = optParser.parse_args(fakeArgs)

print optParse.verbose

print options

print args

输出结果


True

{‘verbose‘: True, ‘fileName‘: ‘file.txt‘}

[‘good luck to you‘, ‘arg2‘, ‘arge‘]

2、fakeArgs中不存在‘-v‘,verbose同样返回空(我就不运行代码了)。

第三种:action="store_false"

这与action="store_true"类似,只有其中有参数‘-v‘存在,则verbose的值为False,如果‘-v‘不存在,那么verbose的值为None。

 

 

参数:default

optParser.add_option("-v","--vison", action="store_false", dest="verbose",default=‘gggggg‘)

设置些参数是用于返回verbose的返回值。

如果action="store",default=‘gggggg‘,代码如下。

optParser.add_option("-v","--vison", action="store_false", dest="verbose",default=‘gggggg‘)

fakeArgs = [‘-f‘,‘file.txt‘,‘-v‘,‘good luck to you‘, ‘arg2‘, ‘arge‘]

如果fakeArgs中存在‘-v‘,则返回值为,"good luck to you"

如果不存在‘-v‘则返回值为,"gggggg"

如果action ="store_true",default=‘gggggg‘,代码如下。

optParser.add_option("-v","--vison", action="store_true", dest="verbose",default=‘gggggg‘)

如果fakeArgs中存在‘-v‘,则返回值为True。

如果fakeArgs中不存在‘-v‘,则返回值为None

再一次说明了,如果action="store_true"时,verbose的值只与是否‘-v‘有关。是否也说明了action_true的优先级高于default。

注:action="store_false"的功能与此类似,返回为False或者None。再一次证明了

 

 

参数:help

optParser.add_option("-f","--file",action = "store",type = "string",dest = "fileName")

optParser.add_option("-v","--vison", action="store", dest="verbose",default=‘gggggg‘,

help="make lots of noise [default]")

主要用于显示帮助信息,使用optParser.print_help()将帮助栏显示出来。

在action="restore"时对比没使用help参数的‘-f‘与使用了help参数的‘-v‘,多了一行帮助信息。


Usage: myprog[ -f ][-s ] arg1[,arg2..]

Options:

-h, --help            show this help message and exit

-f FILENAME, --file=FILENAME

-v VERBOSE, --vison=VERBOSE

make lots of noise [default]

在action="restore_false"时。

optParser.add_option("-f","--file",action = "store",type = "string",dest = "fileName")

optParser.add_option("-v","--vison", action="store", dest="verbose",default=‘gggggg‘,

help="make lots of noise [default]")

两个对比的输出结果如下


Usage: myprog[ -f ][-s ] arg1[,arg2..]

Options:

-h, --help            show this help message and exit

-f FILENAME, --file=FILENAME

-v, --vison           make lots of noise [default]

 

 

参数:type

没有仔细测试,但知道一点时如果type="string"时,将无法使用action="store_false"和action="store_true"。不知是否可以将type理解成verbose的返回值类型。

关于输入的的参数fakeArgs的说明

还是用之前的代码分析


from optparse import OptionParser

MSG_USAGE = "myprog[ -f ][-s ] arg1[,arg2..]"

optParser = OptionParser(MSG_USAGE)

optParser.add_option("-f","--file",action = "store",type="string",dest = "fileName")

optParser.add_option("-v","--vison", action="store", dest="verbose",default=‘gggggg‘,

help="make lots of noise [default]")

fakeArgs = [‘-f‘,‘file.txt‘,‘-v‘,‘good luck to you‘, ‘arg2‘, ‘arge‘]

options, args = optParser.parse_args(fakeArgs)

print options

print args

fakeArgs中的值对于各选项‘-v‘,‘-f‘来说都是前后两个值配对的。

1、正常情况:

结果如下


则options的值为:     {‘verbose‘:‘good luck to you‘, ‘fileName‘: ‘file.txt‘}

args的值为:           [‘arg2‘, ‘arge‘]

2、不正常情况:

如果连续出现两个选项‘-f‘,‘-v‘。

fakeArgs = [‘-f‘,‘-v‘,‘good luck to you‘, ‘arg2‘, ‘arge‘]

‘-v‘作为值传给了fileName。

但verbose返回的是默认值‘gggggg‘,如果没设置将会返回None。换句说话,就是没检测到参数‘-v‘的存在,这也再一次说明了,fakeArgs中键值配对的观念。前一个数作为选项,后一个作为值。

结果如下:


则options的值为:     {‘verbose‘:‘gggggg‘, ‘fileName‘: ‘-v‘}

args的值为:           [‘good luck to you‘,‘arg2‘, ‘arge‘]

3、如果多出一个‘x‘未被定义则程序会报错。

fakeArgs = [‘-x‘,‘-f‘,‘file.txt‘,‘-v‘,‘good luck to you‘, ‘arg2‘, ‘arge‘]

时间: 2024-09-29 22:45:01

转载:optparse模块OptionParser学习的相关文章

optparse模块OptionParser学习

optparse,是一个能够让程式设计人员轻松设计出简单明了.易于使用.符合标准的Unix命令列程式的Python模块.生成使用和帮助信息. 使用此模块前,首先需要导入模块中的类OptionParser,然后创建它的一个实例(对象): from optparse import OptionParser parser = OptionParser()  #这里也可以定义类的参数 例子1: from optparse import OptionParser   def opt():     pars

转载---Python模块学习optparse 处理命令行参数

参考资料 http://docs.python.org/library/optparse.html 原文地址 http://mrwlwan.wordpress.com/2008/09/25/python%ef%bc%9a-%e4%bd%bf%e7%94%a8-optparse-%e5%a4%84%e7%90% Python 有两个内建的模块用于处理命令行参数: 一个是 getopt,<Deep in python>一书中也有提到,只能简单处理 命令行参数: 另一个是 optparse,它功能强

python optparse模块学习

Python 有两个内建的模块用于处理命令行参数: 一个是 getopt,getopt只能简单处理 命令行参数. 另一个是 optparse,是一个能够让程式设计人员轻松设计出简单明了.易于使用.符合标准的Unix命令列程式的Python模块.生成使用和帮助信息. 下面是一个简单的示例脚本optparse_exampl_1.py: [[email protected] python]# vim optparse_exampl_1.py   #!/usr/bin/env python from o

optparse 模块—— 命令行选项的解析器

15.5 optparse 模块--  命令行选项的解析器 注意:从2.7版本后不再使用:optparse模块不推荐使用,python不再更新该模块,后续的发展将推荐使用argparse模块. 支持python2.3及以上版本 optparse模块比旧的getopt模块具有更方便.更灵活.功能更强大的解析命令行选项的库.optparse使用一种更加声明式的命令行解析风格:你创建一个OptionParser实例,填充选项,并解析命令行.optparse允许用户指定选项,使用传统的GNU/POSIX

Python的参数模块OptionParser说明

可以替代getopt的一个模块 from optparse import OptionParser #  生成一个实例 parser = OptionParser(usage="%prog -f server.list -u root ...  versrion 1",version="%prog 1") parser.add_option("-f", "--file",dest="File",action

python OptParse模块的用法详解

OptParse模块的简单介绍 Python 有两个内建的模块用于处理命令行参数: 一个是 getopt只能简单处理 命令行参数: 另一个是 optparse,它功能强大,而且易于使用,可以方便地生成标准的.符合Unix/Posix 规范的命令行说明.会自动帮你负责-h帮助选项. 要自己定制程序的参数选项控制,可以使用python自带的OptParse模块,当然也可以直接解析sys.argv里的参数(但是此比较麻烦) import optparse optparse 现在不再更新了,更新版本叫

【Python 命令行参数解析: optparse 模块】

大家在使用Python进行脚本开发时,经常需要通过终端交互的方式对Python的脚本模块进行调用.这时在 Python模块中提供基础的命令行参数支持是必不可少的.那么,在Python中我们如何实现命令行参数的传入和解析呢,如下内容将对此进行简要的介绍. Python对命令行参数解析的支持 Python中通过两个内建模块对命令行参数解析进行支持:getopt 和 optparse 两种内置支持 模块名 功能说明 getopt 对命令行参数进行简单的处理 optparse 能够对命令行参数进行复杂的

python中optparse模块用法

optparse模块主要用来为脚本传递命令参数,采用预先定义好的选项来解析命令行参数. 首先需要引入optparser模块,然后执行初始化,实例化一个OptionParser对象(可以带参,也可以不带参数),再为命令行添加选项,示例: from optparse import OptionParser usage="show something usefull -- for example: how to use this program" parser = OptionParser(

Spark的Rpct模块的学习

Spark的Rpct模块的学习 Spark的Rpc模块是1.x重构出来可,以前的代码中大量使用了akka的类,为了把akka从项目的依赖中移除,所有添加了该模块.先看下该模块的几个主要的类 使用EA把该模块所有的类都添加进来了 要看懂该模块还是要先了解akka,  akka有Actor和ActorRef两个类,一个用于接收消息,一个用于发送消息.正好对应该模块的RpcEndpoint和RpcEndpointRef两个类. 下面大致介绍下这几个类,附带一些scala的特性 1:RpcAddress