该模块提供了解析命令行选项的接口,其中optparse已经在2.7以后的版本中已经不再继续开发好此模块,从2.7后,将开发argparse模块。
optparse模块使用的代码示例:
#!/bin/sh # # This is a learning notes in the process of analysing repo python scripts # authour: [email protected] # magic='--calling-python-from-/bin/sh--' """exec" python -E "$0" "$@" """#$magic" if __name__ == '__main__': import sys if sys.argv[-1] == '#%s' % magic: del sys.argv[-1] del magic # print "An example of using optparse\n" 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()#the default argument list is sys.argv[1:]
其中,options表示指定的选项,args表示对应的位置参数
理解option的actions
Actions告诉optparse怎样处理命令行对应的选项,这些Actions已经预先定义在optparse模块当中,当然可以扩展出更多的Action。默认情况下,action为store。
StoreAction
optparse将紧随其后的参数保存在DEST指定的变量中。如:
parser.add_option("-f", "--file", action="store", type="string", dest="filename")
执行如下语句后:
args = ["-f", "foo.txt"] (options, args) = parser.parse_args(args)
options.filename的值为foo.txt。
optparse也支持其他类型的参数,如:
parser.add_option("-n", type="int", dest="num")
对于布尔类型的选项,有两个特别的action:store_true和store_false。
如:
parser.add_option("-v", action="store_true", dest="verbose") parser.add_option("-q", action="store_false", dest="verbose")
上述代码表示:当选项为-v时,verbose为True,当选项为-q时,verbose为False。
其他的一些Actions:
默认值
parser.add_option("-v", action="store_true", dest="verbose", default=False) parser.add_option("-q", action="store_false", dest="verbose", default=True)
首先,默认值与选项无关,只与dest值关联,当多次设置默认值时,最后一次设置的默认值有效。
产生帮助信息
parser.add_option("-v", "--verbose", action="store_true", dest="verbose", default=True, help="make lots of noise [default]")
metavar
它表示用户需要提供的参数,默认情况下,optparse将dest变量名全部转为大写作为metavar的值,当然,我们也可以显示的指定metavar的值。
分组选项
# Logging group = init_optparse.add_option_group('Logging options') group.add_option('-q', '--quiet', dest="quiet", action="store_true", default=False, help="be quiet"), # Manifest group = init_optparse.add_option_group('Manifest options') group.add_option('-u', '--manifest-url', dest='manifest_url', help='manifest repository location', metavar='URL')