optparse模块

来源:互联网 发布:淘宝网泾县宣纸 编辑:程序博客网 时间:2024/06/05 03:00
该模块提供了解析命令行选项的接口,其中optparse已经在2.7以后的版本中已经不再继续开发好此模块,从2.7后,将开发argparse模块。

optparse模块使用的代码示例:

[python] view plaincopy
  1. #!/bin/sh  
  2. #  
  3. #  This is a learning notes in the process of analysing repo python scripts  
  4. #   authour: fuyajun1983cn@hotmail.com  
  5. #  
  6. magic='--calling-python-from-/bin/sh--'  
  7. """exec" python -E "$0" "$@" """#$magic"  
  8. if __name__ == '__main__':  
  9.   import sys  
  10.   if sys.argv[-1] == '#%s' % magic:  
  11.     del sys.argv[-1]  
  12. del magic  
  13.   
  14. #  
  15. print "An example of using optparse\n"  
  16.   
  17. from optparse import OptionParser  
  18.   
  19. parser = OptionParser()  
  20. parser.add_option("-f""--file", dest="filename",  
  21.                   help="write report to FILE", metavar="FILE")  
  22. parser.add_option("-q""--quiet",  
  23.                   action="store_false", dest="verbose", default=True,  
  24.                   help="don't print status messages to stdout")  
  25.   
  26. (options, args) = parser.parse_args()#the default argument list is sys.argv[1:]  

其中,options表示指定的选项,args表示对应的位置参数

理解optionactions

Actions告诉optparse怎样处理命令行对应的选项,这些Actions已经预先定义在optparse模块当中,当然可以扩展出更多的Action。默认情况下,actionstore

StoreAction

optparse将紧随其后的参数保存在DEST指定的变量中。如:

[python] view plaincopy
  1. parser.add_option("-f""--file",  
  2.                   action="store", type="string", dest="filename")  

执行如下语句后:

[python] view plaincopy
  1. args = ["-f""foo.txt"]  
  2. (options, args) = parser.parse_args(args)  

options.filename的值为foo.txt

optparse也支持其他类型的参数,如:

[python] view plaincopy
  1. parser.add_option("-n", type="int", dest="num")  

对于布尔类型的选项,有两个特别的actionstore_truestore_false

如:

[python] view plaincopy
  1. parser.add_option("-v", action="store_true", dest="verbose")  
  2. parser.add_option("-q", action="store_false", dest="verbose")  

上述代码表示:当选项为-v时,verboseTrue,当选项为-q时,verboseFalse

其他的一些Actions

"store_const"
存储一个常量
"append"
将该选项的参数追加到一个列表中
"count"
将某个计数器加1
"callback"
调用某个特定的函数

默认值

[python] view plaincopy
  1. parser.add_option("-v", action="store_true", dest="verbose", default=False)  
  2. parser.add_option("-q", action="store_false", dest="verbose", default=True)  

首先,默认值与选项无关,只与dest值关联,当多次设置默认值时,最后一次设置的默认值有效。


产生帮助信息

<span style="font-family:DejaVu Sans Mono,monospace;">parser.add_option("-v", "--verbose",</span>                  <span style="font-family:DejaVu Sans Mono,monospace;">action="store_true", dest="verbose", default=True,</span>                  <span style="font-family:DejaVu Sans Mono,monospace;"><strong>help="make lots of noise [default]"</strong>)</span>

metavar

它表示用户需要提供的参数,默认情况下,optparsedest变量名全部转为大写作为metavar的值,当然,我们也可以显示的指定metavar的值。

metavar

它表示用户需要提供的参数,默认情况下,optparsedest变量名全部转为大写作为metavar的值,当然,我们也可以显示的指定metavar的值。

分组选项

[python] view plaincopy
  1. # Logging  
  2. group = init_optparse.add_option_group('Logging options')  
  3. group.add_option('-q''--quiet',  
  4.                  dest="quiet", action="store_true", default=False,  
  5.                  help="be quiet"),  
  6. # Manifest  
  7. group = init_optparse.add_option_group('Manifest options')  
  8. group.add_option('-u''--manifest-url',  
  9.                  dest='manifest_url',  
  10.                  help='manifest repository location', metavar='URL'
0 0