【江苏福彩快三】Python中optparse模块使用浅析,

作者:江苏福彩快三计算机网络

又也许选取 set_defaults():

完整的顺序例子

Python代码 

  1. from optparse import OptionParser  
  2. [...]  
  3. def main():  
  4.     usage = "usage: %prog [options] arg"  
  5.     parser = OptionParser(usage)  
  6.     parser.add_option("-f", "--file", dest="filename",  
  7.                       help="read data from FILENAME")  
  8.     parser.add_option("-v", "--verbose",  
  9.                       action="store_true", dest="verbose")  
  10.     parser.add_option("-q", "--quiet",  
  11.                       action="store_false", dest="verbose")  
  12.     [...]  
  13.     (options, args) = parser.parse_args()  
  14.     if len(args) != 1:  
  15.         parser.error("incorrect number of arguments")  
  16.     if options.verbose:  
  17.         print "reading %s..." % options.filename  
  18.     [...]  
  19.   
  20. if __name__ == "__main__":  
  21.     main()

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)

输出如下:

  1. 运用长格式深入分析串列表:["help", "output="]。长格式串也得以有按键状态,即前边不跟"="号。假若跟叁个等号则意味前边还相应一个参数。那一个长格式表示"help"是叁个开关选项;"output="则象征前面应该带三个参数。
    5. 调用getopt函数。函数再次来到多少个列表:opts和args。opts为深入分析出的格式新闻。args为不属于格式新闻的多余的命令行参数。opts是多少个两元组的列表。各个成分为:(选项串,附加参数)。若无增大参数则为空白''。
    6. 百分之百进程使用拾分来含有,那样当深入分析失误时,就能够打字与印刷出利用新闻来文告客户怎样采纳那个顺序。

Python中optparse模块使用浅析,pythonoptparse

不久前遇到贰个难题,是点名参数来运行有个别特定的经过,这很周边Linux中有的发令的参数了,譬如ls -a,为何加上-a选项会响应。optparse模块完成的也是看似的遵循,它是为脚本传递命令参数。

运用此模块前,首先需求导入模块中的类OptionParser,然后创制它的二个实例(对象):

复制代码 代码如下:

from 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 0x2d72f48: -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 0x2d71308: -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:

复制代码 代码如下:

>>> 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
#就算还要写几个采用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 0x2d77148: -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参数:

以此参数是为着让大家定义的“命令”更为逼真,还提供了扶助音讯了吗!呵呵~~轻松用法如下:

复制代码 代码如下:

>>> from 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 0x2bdb888: -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:

复制代码 代码如下:

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]

Example2:

三个轻松易行的例证,就是将给脚本传选项n时,则输出的是n的参数的值,不然给出默许值(脚本保存在E盘):

复制代码 代码如下:

from 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运维如下:

江苏福彩快三 1

近来高出三个难题,是点名参数来运行某些特定的进程,那很临近Linux中部分命令的参数了,举例...

add_option用来加盟选项,action是有store,store_true,store_false等,dest是积累的变量,default是缺省值,help是帮助提醒
最终经过parse_args()函数的深入分析,获得选项,如options.pdcl的值。
上边是四个使用 optparse 的轻松示例:

parser.add_option("-l", "--list", action="callback", callback=test_list, help="check the list.")

$ /usr/bin/foo -n 4x
usage: foo [options]
 
foo: error: option -n: invalid integer value: '4x'
 
$ /usr/bin/foo -n
usage: foo [options]
 
foo: error: -n option requires an argument
客商也能够行使 parser.error() 方法来自定义部分极度的拍卖:

6)平常的应用如下,当中包括了parser.error()来抛出与optionparser较一致的老大和错误消息。

parser.add_option(opt_str, ...,attr=value, ...)

简短流程

第一,必得import OptionParser 类,创设二个 OptionParser 对象:

Python代码 

  1. from optparse import OptionParser  
  2.   
  3. [...]  
  4.   
  5. parser = OptionParser()  

 

然后,使用 add_option 来定义命令行参数:

Python代码 

  1. parser.add_option(opt_str, ...,  
  2.   
  3.                   attr=value, ...)  

 

各种命令行参数正是由参数名字符串和参数属性组成的。如 -f 或者 –file 分别是长短参数名:

Python代码 

  1. parser.add_option("-f", "--file", ...)  

 

最后,一旦您曾经定义好了有着的命令行参数,调用 parse_args() 来剖判程序的命令行:

Python代码 

  1. (options, args) = parser.parse_args()  

 

注: 你也足以传递一个命令行参数列表到 parse_args();不然,暗中同意使用 sys.argv[:1]。

parse_args() 再次回到的八个值:

  • options,它是一个目的(optpars.Values),保存有指令行参数值。只要精通命令行参数名,如 file,就足以访谈其对应的值: options.file 。
  • args,它是五个由 positional arguments 组合的列表。

parse.add_option('-u','--user',dest='user',action='store',type=str,metavar='user',help='Enter User Name!!')  
parse.add_option('-p','--port',dest='port',type=int,metavar='xxxxx',default=3306,help='Enter Mysql Port!!') 
 
parse.add_option('-v',help='Mysql Version!!')  

 

象 usage message 同样,你能够在开创 OptionParser 对象时,钦命其 version 参数,用于体现当前前后相继的版本新闻:

 

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]
(注意:当脚本打字与印刷支持音讯后会退出,不会深入分析别的选项参数)

自定义程序行使方法:

程序:

parser.add_option("-f", "--file", ...)

 

parser.set_defaults(verbose=True)

parser.add_option(...)

(options, args) = parser.parse_args()

前后相继生成扶助
optparse 另三个有益的职能是自动生成程序的佑助音讯。你只需求为 add_option() 方法的 help 选项钦定辅助信息文本:

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)
    [...]

    usage:  [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) 
      -fFILE, --file=FILE  write output to FILE 
      -mMODE, --mode=MODE  interaction mode: one of 'novice', 'intermediate' 
                           [default], 'expert' 
     
      Dangerous Options: 
        Caution: use of these options is at your own risk.  It is believed that 
        some of them bite. 
        -g                 Group option.

调用optionparser的分析函数:(options, args) = parser.parse_args()
在options中动用深入分析到的options,在args中选择任何的args。

parser.add_option("-f","--file", action="store", dest="filename", default="foo.txt")
parser.add_option("-v", action="store_true", dest="verbose", default=True)

又只怕应用 set_defaults():

metavar=:表示呈现到help中option的暗中认可值;

注: 你也得以传递一个命令行参数列表到 parse_args();不然,暗许使用 sys.argv[:1]。
parse_args() 再次回到的四个值:
options,它是多少个对象(optpars.Values),保存有发号施令行参数值。只要知道命令行参数名,如 file,就可以访谈其相应的值: options.file 。
args,它是贰个由 positional arguments 重组的列表。
Actions
action 是 parse_args() 方法的参数之一,它提醒 optparse 当分析到二个命令行参数时该如哪个地方理。actions 有一组固定的值可供选拔,暗中认可是’store ‘,表示将指令行参数值保存在 options 对象里。
示例

 

optparse模块首要用来为脚本传递命令参数功效.

def TestOpionparser():
  from optparse import OptionParser
  parser = OptionParser()
  parser.add_option("-f", "--file", dest="filename",
                  help="write report to FILE", metavar="FILE")
  parser.add_option("-q", "--quiet",
                  action="store_false", dest="verbose", default=True,
                  help="don't print status messages to stdout")
  (options, args) = parser.parse_args()
  print (options.filename)
  print (options.verbose)
  print (args)

输出:

2. 只要求参数,无需参数内容的格式(-a --bb ...)

parser = OptionParser(usage="%prog [-f] [-q]", version="%prog 1.0")

与此相类似,optparse 就能活动解释 –version 命令行参数:

 

管理特别

示例

上边是二个选取optparse 的简约示例:

Python代码 

  1. from optparse import OptionParser  
  2. [...]  
  3. parser = OptionParser()  
  4. parser.add_option("-f", "--file", dest="filename",  
  5.                   help="write report to FILE", metavar="FILE")  
  6. parser.add_option("-q", "--quiet",  
  7.                   action="store_false", dest="verbose", default=True,  
  8.                   help="don't print status messages to stdout")  
  9.   
  10. (options, args) = parser.parse_args()  

 

前日,妳就足以在命令行下输入:

Python代码 

  1. <yourscript> --file=outfile -q  
  2. <yourscript> -f outfile --quiet  
  3. <yourscript> --quiet --file outfile  
  4. <yourscript> -q -foutfile  
  5. <yourscript> -qfoutfile  

 

上面那么些命令是同样效果的。除了这么些之外, optparse 还为大家自动生成命令行的扶植新闻:

Python代码 

  1. <yourscript> -h  
  2. <yourscript> --help  

 

输出:

Python代码 

  1. usage: <yourscript> [options]  
  2.   
  3. options:  
  4.   -h, --help            show this help message and exit  
  5.   -f FILE, --file=FILE  write report to FILE  
  6.   -q, --quiet           don't print status messages to stdout  

 

 

总结程序特别和客户特别。这里根本切磋的是客户特别,是指因顾客输入无效的、不完整的命令行参数而吸引的不得了。optparse 能够自行探测并管理部分客户特别:

<yourscript> --file=outfile -q

<yourscript> --file=outfile -q 
<yourscript> -f outfile --quiet 
<yourscript> --quiet --file outfile 
<yourscript> -q -foutfile 
<yourscript> -qfoutfile

 

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

parser.add_option("-q", action="store_false", dest="verbose")

那样的话,当分析到 ‘-v’,options.verbose 将被给予 True 值,反之,深入分析到 ‘-q’,会被授予 False 值。

其它的 actions 值还有:
store_const 、append 、count 、callback
默认值
parse_args() 方法提供了三个 default 参数用于安装默许值。如:

 

parser.add_option("-f","--file", action="store", dest="filename", default="foo.txt")
parser.add_option("-v", action="store_true", dest="verbose", default=True)

4. 一贯调用方法,并传参数的格式

#usage 定义的是使用情势,%prog 表示脚本小编,version定义的是本子名字和版本号  

 

Python 有三个内建的模块用于拍卖命令行参数:一个是 getopt,《Deep in python》一书中也会有关系,只可以轻巧管理 命令行参数;另二个是 optparse,它成效庞大,并且便于使用,能够一本万利地生成规范的、符合Unix/Posix 标准的命令行表明。
示例

Python 有多少个内建的模块用于拍卖命令行参数:
二个是 getopt,《Deep in python》一书中也会有关系,只好轻巧处理命令行参数;
另二个是 optparse,它功能壮大,况兼便于使用,能够方便地扭转标准的、适合Unix/Posix 标准的命令行表达。

(options, args) = parser.parse_args()
[...]
if options.a and options.b:
parser.error("options -a and -b are mutually exclusive")
上边的例子,当 -b 和 -b 命令行参数同不日常候设有时,会打字与印刷出“options -a and -b are mutually exclusive“,以警示客商。
借使上述的十一分管理措施还不能满足须要,你也许需求持续 OptionParser 类,比量齐观载 exit() 和 erro() 方法。
 
完全的程序例子

参考:

上边那几个命令是一致效果的。除此而外, optparse 还为我们自动生成命令行的扶持音信:

  1. 平日的格式(-a a -b b ...)

    1 #parse command 2 usage = "usage: python %prog [options]" 3 parser = OptionParser(usage=usage) 4 parser.add_option('-d', '--device', help="Device serial number.") 5 parser.add_option('-o', '--osVersion', help="Os version.") 6 options, args = parser.parse_args(sys.argv) 7
    8 if options.device is None: 9 ...... 10 else: 11 ...... 12
    13 if options.osVersion is None: 14 osVersion = ...... 15 elif options.osVersion is "1": 16 osVersion = ...... 17 else: 18 print "Error" 19 sys.exit(-1)

Python 有五个内建的模块用于拍卖命令行参数:

<yourscript> -f outfile --quiet
<yourscript> --quiet --file outfile
<yourscript> -q -foutfile
<yourscript> -qfoutfile

暗许地,type 为’string’。也正如上边所示,长参数名也是可选的。其实,dest 参数也是可选的。若无一点点名 dest 参数,将用命令行的参数名来对 options 对象的值举行存取。
store 也可能有其余的二种格局: store_true 和 store_false ,用于拍卖带命令行参数前边不 带值的情事。如 -v,-q 等命令行参数:

选取optionparser模块来剖判

#调用OptionGroup类,定制以组彰显的option  
  
group.add_option('-g',action='store_true',help='Group option.')  
#添加option  
parser.add_option_group(group)  
#将刚定制的groupoption加入parser中  
  
group = OptionGroup(parser,'Debug Options')  
group.add_option('-d','--debug',action='store_true',  
                 help='Print debug information.')  
group.add_option('-s','--sql',action='store_true',  
                 help='Print all SQL statements executed')  
group.add_option('-e',action='store_true',help='Print every action done')  
parser.add_option_group(group)  
  
(options,args) = parser.parse_args()  
#浅析脚本输入的参数值,options是二个含有了option值的靶子  
#args是一个岗位参数的列表</span>   

default=:表示比option的私下认可值;

地方的例子,当 -b 和 -b 命令行参数同时存在时,会打字与印刷出“options -a and -b are mutually exclusive“,以警示客商。
假设以上的可怜管理方法还不能满意须要,你大概须要延续 OptionParser 类,同仁一视载 exit() 和 erro() 方法。
完全的前后相继例子

默认值

parse_args() 方法提供了贰个 default 参数用于安装暗中同意值。如:

Python代码 

  1. parser.add_option("-f","--file", action="store", dest="filename", default="foo.txt")  
  2. parser.add_option("-v", action="store_true", dest="verbose", default=True)  

 

又也许应用 set_defaults():

Python代码 

  1. parser.set_defaults(filename="foo.txt",verbose=True)  
  2. parser.add_option(...)  
  3. (options, args) = parser.parse_args()  

 

 

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()

 

foo: error: -n option requires an argument

 

action有两种档案的次序:
action='store' 暗中认可类型,可以忽略不写。顾客必得提交叁个明了的参数值,该类型定义了将实际参数值保存到dest内定变量中
action='store_true' 顾客不需提交参数值,该类型定义了将布尔值true保存到dest钦定的变量中
action='store_false' 客商不需付出参数值,该类型定义了将布尔值false保存到dest钦点的变量中 

files.txt
False
['arg1', 'arg2']

本文由江苏福彩快三发布,转载请注明来源

关键词: 江苏福彩快三