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文档中上面提到的章节。