Python程序的命令行选项的解析


                                     在写bbs上批量下载和上传脚本的时候,偶然发现了标准库中的optparse这个库,发现甚至好用。本来自己写了一个函数,optionparse,花了很大的功夫,可是发现还不如利用optparse库的几行代码。这个模块的具体使用细节可以参见Python lib的文档14.3节——"optparse — More powerful command line option parser",这里只总结一些基本的用法。
     首先需要导入模块import optparse
     有三种方法可以添加一个option:
     (1) 利用add_option函数:                    
               
                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()
(2) 利用make_option函数:
from optparse import OptionParser, make_option
    # useage
    usage = "usage: python %prog [options] arg"
    # make options
    option_list = [
                    make_option("-f", "--file", dest="filename",
help="write report to FILE", metavar="FILE" ),
                    make_option("-a", "--author", dest="author", help="Specify the author of subjects"),                    
                    make_option("-d", "--date", action="store_true", dest="saveDate", default=False, help="Store the daownloaded files into a drectory named as subject id" )
                  ]
    # add options and parse
    parser = OptionParser(usage=usage, option_list=option_list, version="%prog 1.1")
(options, args) = parser.parse_args()
上述代码中实例化OptionParser时的参数version="%prog 1.1"可以使程序支持选项"--version"
     要使用一个option,可以这样,如上例中,我们要检查用户是否设置了-f,-a和-d选项(或者--file,--author和--date):
if options.filename != None :
    print options.filename
if  options.author != None :
    print options.author
if options.saveDate == True :
    print "user set the -d or --date option"
     这个模块还有一些高级的用法,可以让你写出比较professional的程序命令行选项,让你的程序更人性化,具体可以参考lib文档中上面提到的章节。