optparser是一个非常灵活、强大的命令行设置解析模块,并且也很容易上手使用。optparse通过创建一个OptionParser的实例,对命令行进行解析。另外,optparse通过GNU/POSIX语法确定命令行选项(option),并且还可以产生命令行的用法和帮助信息。
1、首先导入OptionParser类,然后创建一个OptionParse实例,如下:
from optparse import OptionParser
usage = "usage: python %s [options]" %sys.argv[0]
parser = OptionParser(usage=usage)
OptionParser类的参数如下:
usage(default:"%prog [options]")
这个参数是打印程序的用法,例如:运行错误或者获取帮助信息时
option_list
(default: []
)这个参数是命令行选项列表,这个选项列表在standard_options_list中选项添加之后,但是在版本和帮助选项添加之前。也可以在创建实例之后通过add_options()添加。
option_list = [ make_option("-f", "--filename", action="store", type="string", dest="filename"), make_option("-q", "--quiet", action="store_false", dest="verbose"), ]
parser = OptionParser(option_list=option_list)
option_class
(default: optparse.Option)在add_options()中添加options到解析器(parser)时使用的类
version
(default: None
)打印的版本信息
conflict_handler
(default: "error"
)选项冲突时的错误处理
description
(default: None
)程序的间断描述信息
formatter
(default: a new IndentedHelpFormatter)帮助信息格式,有两种格式:IndentedHelpFormatter和TitledHelpFormatter.
add_help_option
(default: True
)如果为true,optparse添加帮助选项option到解析器
prog
在usage和version中”%prog“表示的字符串,代替os.path.basename(sys.argv[0])
parser.add_option("-f", "--file", dest="filename",
help="read data from filename", metavar="FILE")
一般添加命令行选项通过OptionParser类中的add_option()方法,如:
parser.add_option(opt_str[, ...], attr=value, ...)
3、设置定义完成之后,通过optparse解析程序的命令行,如下:
(options, args) = parser.parse_args()
parse_args主要有两个输入参数:
args(default: sys.argv[1:]
) :
处理的参数列表
values(default: a new instance of optparse.Values):
存储选项参数的对象
两个返回值:
options:
与传递的options或者optparse对象相同。通过optpars创建的实例值;
args:
所有被处理的参数之后的参数
4、另外可以对option解析器进行查询和操作
has_option(opt_str)
get_option(opt_str)
remove_option(opt_str)
如果存在opt_str的选项则移除;如果存在多个opt_str的选项,所有相关的选项都变味无效的;如果不在OptionsParser中,则抛出ValueError
5、如果希望移除OptionParser,则通过调用destory()销毁该实例。
以上是optparse常用的功能,详细的帮助可以参考python参考手册。
完整实例代码如下:
import sys
from optparse import OptionParser
def main():
usage = "usage: python %s [options]" %sys.argv[0]
parser = OptionParser(usage=usage)
parser.add_option("-f", "--file", dest="filename",
help="read data from filename", metavar="FILE")
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:
parse.error("incorrect number of argument")
if options.verbose:
print "reading %s..." % options.filename
if __name__ == "__main__":
main()
保存为test.py执行结果如下:
python tset.py -h
Usage: python 111.py [options]
Options:
-h, --help show this help message and exit
-f FILE, --file=FILE read data from filename
-v, --verbose
-q, --quiet