功能:
optparse模块主要用来为脚本传递命令参数功能.
初始化:
from optparse import
*
msg="[-f <filename>][-p <port>] arg..."
parser=OptionParser(msg) #这里为类添加了参数msg ,可选参数
这样,使用parser.print_help()的时候,就会显示
Usage: myscan[-p <port>][-i [IP]]
Options:
-h, --help show this help message and exit
当然,不到msg参数也可以
parser = OptionParser()
然后,使用 add_option 来定义命令行参数:
每个命令行参数就是由参数名字符串和参数属性组成的。如 -h 或者 –help 分别是长短参数名:
parser.add_option('-h' , '--help' ) #演示
最后,一旦你已经定义好了所有的命令行参数,调用 parse_args() 来解析程序的命令行:
(options,args)=parser.parse_args()
你也可以传递一个命令行参数列表到 parse_args();
parse_args() 返回的两个值:
- options,它是一个对象(optpars.Values),保存有命令行参数值。只要知道命令行参数名,如 file,就可以访问其对应的值: options.file 。
- args,它是一个由 positional arguments 组成的列表。
(该段转载)作为核心就是指add_option的其他的参数。有如下几个:
- action: 验证输入数据类型是否和type 匹配,并将符合要求的这个参数存储到dest变量中。有以下几个属性:
- store 默认值
- store_false 标记而已 配合下边的那个store_true来进行代码的“标记”,辅助流程控制。 - store_true 标记而已
- store 默认值
- type : 指的是对应于参数,如-f,-n等的接下来的那个参数的数据类型,有string,int,float等等
- dest : 用于保存临时变量,其值可以作为options的属性进行访问。存储的内容就是如-f,-n 等紧挨着的那个参数内容。
- help: 提供用户友好的帮助信息,一般可以用来解释本add_option方法的功能阐述。
举个小列子:
>>> parser.add_option("-f", "--file",action="store", type="string", dest="filename")
<Option at 0x2d72f48: -f/--file>
>>> args = ["-f", "passwd.txt"] #这个是模拟命令行的输入
>>> (options, args) = parser.parse_args(args)
>>> options.filename
'passwd.txt'
对于action属性可以看看接下来的这段代码。
>>> from optparse import OptionParser
>>> parser=OptionParser()
>>> parser.add_option("-v", action="store_true", dest="verbose")
<Option at 0x2ceb888: -v>
>>> parser.add_option("-q", action="store_false", dest="verbose")
<Option at 0x2d68e48: -q>
>>> fakeArgs = ['-v','hello']
>>> options, args = parser.parse_args(fakeArgs)
>>> options.verbose
True
>>> fakeArgs = ['-q','bye bye']
>>> options, args = parser.parse_args(fakeArgs)
>>> options.verbose
False
#如果同时写两个选项e和q,它会以最后出现的为准
>>> fakeArgs = ['-e','bye bye','-c','hello']
>>> options, args = parser.parse_args(fakeArgs)
>>> options .verbose
True
这里主要是讲解一下关于default参数的作用,其实就是给dest的默认值。
如果我们没有指定dest的值的话,default的值就会作为dest的默认值来进行使用!
>>> parser.add_option("-x", action="store", dest="verbose", default="defaultvalue")
<Option at 0x2d77148: -x>
>>> options, args = parser.parse_args() #这里没有传参数
>>> options.verbose
'defaultvalue'
完整的demo
from optparse import OptionParser
usage = "myprog[ -f <filename>][-s <xyz>] arg1[,arg2..]"
optParser = OptionParser(usage)
optParser.add_option("-f","--file",action = "store",type="string",dest = "fileName")
ooptParser.add_option("-v","--vison", action="store_false", dest="verbose",default='None',
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 <filename>][-s <xyz>] arg1[,arg2..]
Options:
-h, --help show this help message and exit
-f FILENAME, --file=FILENAME
-v, --vison make lots of noise [default]