python小专题——optparse模块
添加时间:2013-6-11 点击量:
浅谈optparse模块
比来碰到一个题目,是指定参数来运行某个特定的过程,这很类似Linux中一些号令的参数了,比如ls -a,为什么加上-a选项会响应。optparse模块实现的也是类似的功能,它是为脚本传递号令参数。
应用此模块前,起首须要导入模块中的类OptionParser,然后创建它的一个实例(对象):
optparse import OptionParser
parser = OptionParser() #这里也可以定义类的参数,后续有
接着就可以添加选项了,根蒂根基语法:
parser.add_option(opt_str, ...,
attr=value, ...)
每个opt_str可以有多个选项字符串,比如-f 和--file(就行Linux号令行中ls -a和ls --all结果一样),只要定义了这些选项,则在号令行输入的时辰这些选项就会被辨认,不然报错。opt_str的定义可以如下:
parser.add_option(-f, --file, ...) #-f 和 --file 是作为调用时的参数的标签,会被辨认
被选项被定义好后,则可以调用parse_args()函数来获取我们定义的选项和参数
(options, args) = parser.parse_args() #parse_args可以有参数,不定义的话应用默认的sys.argv[1:]
parse_args()返回两个值,一个是选项options(如:-f),另一个是参数args,即除选项options以外的值(如:test.txt)
add_option中最首要的四个option的属性是:action,type,dest(destination),help。这四个中action又是最根蒂根基的。
action参数(附带介绍了type、dest):
action参数告诉optparse该做什么当它在号令行中碰到选项时。action有三种存储体式格式:store、store_false、store_true。若是不指定action的值,默认的是store,它告诉optparse将持续读取下一个参数(type),包管类型的正确性,并将它将值存储在一个变量(dest)中,即将号令行中输入的字符串将它存为options的属性,如许可以直接调用。烦琐了一大堆,我本身都被搞晕了~~~~,先看个例子吧!
>>> parser.add_option(-f, --file,action=store, type=string, dest=filename)
<Option at 0 x2d72f48: -f/--file>
>>> args = [-f, foo.txt] #这个是模仿号令行的输入
>>> (options, args) = parser.parse_args(args)
>>> options.filename
foo.txt
上述:当optparse看到选项-f时,它将持续读下一个参数是foo.txt,并将它存储在options.filename(这个filename就是add_option中的dest),之后dest的值将作为parser的属性被存储。所以,当调用parse_args函数时,options.filename的值就是foo.txt。这个是以“string”类型存储的,当然type也可所以int和float等,比如下面的:
parser.add_option(-n, type=int, dest=num)
重视,这个没有指定一个长字符串的选项(如:--number),这当然是可以的,不过号令行输入时选项就只能是-n了,也没有指定action,应用默认的“store”。再次应用模仿的号令行参数[-n22](一个参数),也可以写成[-n 22](作为两个参数来传递):
>>> parser.add_option(-n, type=int, dest=num)
<Option at 0 x2d71308: -n>
>>> (options, args) = parser.parse_args([-n22])
>>> print options .num
22
若是不指定type参数,默认的是string类型,所以一个最简单的体式格式可以写成如许:
parser.add_option(-f, dest=filename)
action另两种值分别是:“store_true”和“store_false”,这一般作为一个标识表记标帜应用,例如开端运行一个法度时将flag设为True,退出时将flag设为False。看了下面的例子就全熟悉打听了:被选项碰到v时,它将options.verbose设为True,被选项碰到q时,它将options.verbose设为False:
>>> optparse import OptionParser
>>> parser=OptionParser()
>>> parser.add_option(-v, action=store_true, dest=verbose)
<Option at 0 x2ceb888: -v>
>>> parser.add_option(-q, action=store_false, dest=verbose)
<Option at 0 x2d68e48: -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
#若是同时写两个选项v和q,它会以哪个为准呢,我试了一下,是以最后呈现的为准,呵呵~~
>>> fakeArgs = [-q,bye bye,-v,hello]
>>> options, args = parser.parse_args(fakeArgs)
>>> options .verbose
True
Default参数:
default参数很好懂得了,即当没有指定dest的值时,给出个默认值,如下:
>>> parser.add_option(-x, action=store, dest=verbose, default=hahaha)
<Option at 0 x2d77148: -x>
>>> options, args = parser.parse_args() #这里没有传参数
>>> options.verbose
hahaha
若是如许的话,那下面这两句的结果就一样了(前提是不给parse_args()函数传参:)
parser.add_option(-v, action=store_true, dest=verbose)
parser.add_option(-q, action=store_false, dest=verbose, default=True)
help参数:
这个参数是为了让我们定义的“号令”更为逼真,还供给了帮助消息了呢!呵呵~~简单用法如下:
>>> optparse import OptionParser
>>> usage = myprog[ -f <filename>][-s <xyz>] arg1[,arg2..]
>>> parser=OptionParser(usage) #这里为类添加了参数usage
>>> optParser.add_option(-f,--file,action = store,type=string,dest = fileName,help=no any help)
<Option at 0 x2bdb888: -f/--file>
>>> fakeArgs = [-f,file.txt]
>>> options, args = parser.parse_args(fakeArgs)
>>> options.fileName
file.txt
>>> parser.print_help()
Usage: myprog[ -f <filename>][-s <xyz>] arg1[,arg2..]
Options:
-h, --help show this help message and exit #此两行按照option主动生成,斗劲智能额~~
-f FILENAME, --file=FILENAME
no any help #这是我定义的帮助信息(呵呵,不太友爱~~)
>>> parser.print_usage()
Usage: myprog[ -f <filename>][-s <xyz>] arg1[,arg2..] #这是类的usage信息~~很逼真,有木有?
>>>
上述是介绍根蒂根基的语法,下面举两个例子,一个是网上找的一个模仿号令行的参数的例子,另一个是“真实”的例子~~~
Example1:
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]
Example2:
一个简单的例子,就是将给脚本传选项n时,则输出的是n的参数的值,不然给出默认值(脚本保存在E盘):
optparse import OptionParser
optParser = OptionParser()
optParser.add_option(-n,--number,action = store,type=int,dest = intNumber)
optParser.add_option(-v,--version, action=store_false, dest=verbose,default=gggggggg,help=no help)
options, args = optParser.parse_args()
if options.intNumber is not None: #当有选项n时,则应用给出的参数值
#num = options.intNumber
print options.intNumber,options.verbose
else:
for i in range(1,5): #不给选项n的景象下,默认输出的是1~4
#num = i
print i
打开cmd运行如下:
浅谈optparse模块
比来碰到一个题目,是指定参数来运行某个特定的过程,这很类似Linux中一些号令的参数了,比如ls -a,为什么加上-a选项会响应。optparse模块实现的也是类似的功能,它是为脚本传递号令参数。
应用此模块前,起首须要导入模块中的类OptionParser,然后创建它的一个实例(对象):
optparse import OptionParser
parser = OptionParser() #这里也可以定义类的参数,后续有
接着就可以添加选项了,根蒂根基语法:
parser.add_option(opt_str, ...,
attr=value, ...)
每个opt_str可以有多个选项字符串,比如-f 和--file(就行Linux号令行中ls -a和ls --all结果一样),只要定义了这些选项,则在号令行输入的时辰这些选项就会被辨认,不然报错。opt_str的定义可以如下:
parser.add_option(-f, --file, ...) #-f 和 --file 是作为调用时的参数的标签,会被辨认
被选项被定义好后,则可以调用parse_args()函数来获取我们定义的选项和参数
(options, args) = parser.parse_args() #parse_args可以有参数,不定义的话应用默认的sys.argv[1:]
parse_args()返回两个值,一个是选项options(如:-f),另一个是参数args,即除选项options以外的值(如:test.txt)
add_option中最首要的四个option的属性是:action,type,dest(destination),help。这四个中action又是最根蒂根基的。
action参数(附带介绍了type、dest):
action参数告诉optparse该做什么当它在号令行中碰到选项时。action有三种存储体式格式:store、store_false、store_true。若是不指定action的值,默认的是store,它告诉optparse将持续读取下一个参数(type),包管类型的正确性,并将它将值存储在一个变量(dest)中,即将号令行中输入的字符串将它存为options的属性,如许可以直接调用。烦琐了一大堆,我本身都被搞晕了~~~~,先看个例子吧!
>>> parser.add_option(-f, --file,action=store, type=string, dest=filename)
<Option at 0 x2d72f48: -f/--file>
>>> args = [-f, foo.txt] #这个是模仿号令行的输入
>>> (options, args) = parser.parse_args(args)
>>> options.filename
foo.txt
上述:当optparse看到选项-f时,它将持续读下一个参数是foo.txt,并将它存储在options.filename(这个filename就是add_option中的dest),之后dest的值将作为parser的属性被存储。所以,当调用parse_args函数时,options.filename的值就是foo.txt。这个是以“string”类型存储的,当然type也可所以int和float等,比如下面的:
parser.add_option(-n, type=int, dest=num)
重视,这个没有指定一个长字符串的选项(如:--number),这当然是可以的,不过号令行输入时选项就只能是-n了,也没有指定action,应用默认的“store”。再次应用模仿的号令行参数[-n22](一个参数),也可以写成[-n 22](作为两个参数来传递):
>>> parser.add_option(-n, type=int, dest=num)
<Option at 0 x2d71308: -n>
>>> (options, args) = parser.parse_args([-n22])
>>> print options .num
22
若是不指定type参数,默认的是string类型,所以一个最简单的体式格式可以写成如许:
parser.add_option(-f, dest=filename)
action另两种值分别是:“store_true”和“store_false”,这一般作为一个标识表记标帜应用,例如开端运行一个法度时将flag设为True,退出时将flag设为False。看了下面的例子就全熟悉打听了:被选项碰到v时,它将options.verbose设为True,被选项碰到q时,它将options.verbose设为False:
>>> optparse import OptionParser
>>> parser=OptionParser()
>>> parser.add_option(-v, action=store_true, dest=verbose)
<Option at 0 x2ceb888: -v>
>>> parser.add_option(-q, action=store_false, dest=verbose)
<Option at 0 x2d68e48: -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
#若是同时写两个选项v和q,它会以哪个为准呢,我试了一下,是以最后呈现的为准,呵呵~~
>>> fakeArgs = [-q,bye bye,-v,hello]
>>> options, args = parser.parse_args(fakeArgs)
>>> options .verbose
True
Default参数:
default参数很好懂得了,即当没有指定dest的值时,给出个默认值,如下:
>>> parser.add_option(-x, action=store, dest=verbose, default=hahaha)
<Option at 0 x2d77148: -x>
>>> options, args = parser.parse_args() #这里没有传参数
>>> options.verbose
hahaha
若是如许的话,那下面这两句的结果就一样了(前提是不给parse_args()函数传参:)
parser.add_option(-v, action=store_true, dest=verbose)
parser.add_option(-q, action=store_false, dest=verbose, default=True)
help参数:
这个参数是为了让我们定义的“号令”更为逼真,还供给了帮助消息了呢!呵呵~~简单用法如下:
>>> optparse import OptionParser
>>> usage = myprog[ -f <filename>][-s <xyz>] arg1[,arg2..]
>>> parser=OptionParser(usage) #这里为类添加了参数usage
>>> optParser.add_option(-f,--file,action = store,type=string,dest = fileName,help=no any help)
<Option at 0 x2bdb888: -f/--file>
>>> fakeArgs = [-f,file.txt]
>>> options, args = parser.parse_args(fakeArgs)
>>> options.fileName
file.txt
>>> parser.print_help()
Usage: myprog[ -f <filename>][-s <xyz>] arg1[,arg2..]
Options:
-h, --help show this help message and exit #此两行按照option主动生成,斗劲智能额~~
-f FILENAME, --file=FILENAME
no any help #这是我定义的帮助信息(呵呵,不太友爱~~)
>>> parser.print_usage()
Usage: myprog[ -f <filename>][-s <xyz>] arg1[,arg2..] #这是类的usage信息~~很逼真,有木有?
>>>
上述是介绍根蒂根基的语法,下面举两个例子,一个是网上找的一个模仿号令行的参数的例子,另一个是“真实”的例子~~~
Example1:
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]
Example2:
一个简单的例子,就是将给脚本传选项n时,则输出的是n的参数的值,不然给出默认值(脚本保存在E盘):
optparse import OptionParser
optParser = OptionParser()
optParser.add_option(-n,--number,action = store,type=int,dest = intNumber)
optParser.add_option(-v,--version, action=store_false, dest=verbose,default=gggggggg,help=no help)
options, args = optParser.parse_args()
if options.intNumber is not None: #当有选项n时,则应用给出的参数值
#num = options.intNumber
print options.intNumber,options.verbose
else:
for i in range(1,5): #不给选项n的景象下,默认输出的是1~4
#num = i
print i
打开cmd运行如下: