Python中的optparse模块

简单介绍

Python提供了内置模块optparse来处理命令行选项,该模块提供了比getopt模块更强大的处理功能。

先看一个简单的例子:

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()

然后输入相应的命令行得出相应的结果,比如可以输出命令行的帮助信息: 

Usage: <yourscript> [options]

Options:
  -h, --help            show this help message and exit
  -f FILE, --file=FILE  write report to FILE
  -q, --quiet           don't print status messages to stdout

注意optparse模块处理的长选项,需要附加参数值时,即可以使用等号"="来附加参数的值,也可以使用空格" "来附加参数的值;若使用等号"="来附加参数的值,则等号"="前后不能有空格;例如,下面的命令行选项的输入格式都正确:

--file=filename1、--file  filename1;

解析器

模块optparse使用类OptionParser来作为命令行选项的解析器,下面是该类的方法:

1、构造函数__init__(),用于创建一个命令行选项解析器实例:
optparse.OptionParser(self, prog=None, usage=None, description=None, epilog=None, option_list=None, option_class=<class optparse.Option>, version=None, conflict_handler='error', formatter=None, add_help_option=True);

参数:

(1)prog:当前脚本程序的名称

(2)usage:描述当前脚本程序的用法字符串;显示该用法之前,格式"%prog"将被格式化成当前脚本程序的名称;

(3)description:当前脚本程序的简单描述、摘要、大纲;它会被显示在命令行选项的帮助之前;

(4)epilog:当前脚本程序的简单描述、摘要、大纲;它会被它会被显示在命令行选项的帮助之后;

(5)conflict_handler:命令行选项冲突处理器;比如,当命令行选项重复时,该如何让处理;可选值:error、resolve;

(6)add_help_option:是否自动生成帮助信息;True:是; False:否; 默认值是True;

(7)option_list:当前脚本程序的命令行选项列表;这个选项列表在standard_options_list中选项添加之后,但是在版本和帮助选项添加之前;可以手工创建该列表,该列表中的元素都使用函数make_option()生成;

例如:option_list=[make_option("-f","--file",action="store",type="string",dest="filename"), ...];

(8)option_class:在使用函数add_option()添加命令行选项到解析器时使用的类;默认为optparse.Option类;

(9)version:打印版本的信息;

(10)formatter:帮助信息格式;有两种格式:IndentedHelpFormatter和TitledHelpFormatter;

其中,参数prog在usage和version中使用格式字符串"%prog"代替os.path.basename(sys.argv[0]);

2、add_option函数用于添加命令行选项
optparse.OptionParser.add_option(self, *args, **kwargs)

参数*args用于传递一个命令行选项的列表;**kwargs用于传递该命令行选项的属性;有几种用法:

(1).parser.add_option(self, optparse.Option):直接添加一个命令行选项类的实例;

(2).parser.add_option(self, option_list):直接添加一个命令行选项列表;option_list=[make_option(), ...];

(3).parser.add_option(*opt_str, ..., kwarg=val, ...);

常用的是第三种;这种用法的函数原型如:

optparse.OptionParser.add_option(short_option[, long_option], action="store", type="store", dest=None, nargs=1, default=None, help="help text", metavar="");

其中,参数:

(1).short_option:短选项字符串;例如,"-f"、"-X";

(2).long_option:长选项字符串;例如,"--file"、"--start";长选项和短选项共同构成可选参数*args或*opt_str;

(3).action:行为字符串;它指示optparse当解析到一个命令行选项时该如何处理;可选值store、store_true、store_false、store_const、append、append_const、count、callback、help、version;默认值是store,表示把命令行参数保存到options对象中;

(4).type:当action的值为存储方式时,type表示存储的数据的类型;有string、int、long、float、complex、choice;

(5).dest:当action的值为存储方式时,dest表示用于存储数据(当前命令行选项附加的参数值)的变量,它会成为函数parse_args()返回的options对象的属性,通过"对象名.属性名"的方式引用;如果不指定dest参数的值,则使用当前命令行选项的长选项名作为dest参数的缺省值和options对象的属性,来存储当前命令行选项的附加参数值;如果当前命令行选项没有指定长选项,则使用短选项名作为dest参数的缺省值和options对象的属性,来存储当前命令行选项的附加参数值;

(6).nargs:指定当前命令行选项应该需要接受的附加参数值的个数;默认值为1;多个参数值之间用空格隔开;当在命令行为该选项输入的附加参数值的个数多于nargs指定的个数时,则值取用前面的nargs个;当在命令行上为该选项输入的附加参数值的个数少于nargs所指定的个数时,则会报错;如果nargs>1,则Python解释器会把这nargs个参数值组装成一个元组(tuple),然后把这个元组传递给当前程序使用;

(7).default:当action的值为存储方式时,default用于指定dest表示的属性变量的缺省值,即,当前命令行选项附加的参数的缺省值;

(8).help:当前命令行选项的帮助、说明信息;

(9).metavar:占位字符串;用于在输出帮助信息时,代替当前命令行选项的附加参数的值进行输出;例如:"-f FILE --file FILE";这个例子中,字符串"FILE"就是metavar的值;

例如:add_oprion("-f", "--file", action="store", type="string", dest="fileName", default="file.txt", help="save host info", metavar="FILE");

当调用parse_args()函数之后,会返回一个options对象,dest参数的值"fileName"将作为options对象的属性名使用,即:options.fileName;同时把当前命令行选项的附加参数值保存在该属性中,即:options.fileName="file.txt";

备注:函数add_option()的各个参数其实就对应着类optparse.Option的对象的每一个属性;

3、parse_args函数用于解析命令行参数
(options,args) = optparse.OptionParser.parse_args(self, args=None, values=None)

参数:

(1).args:用于传递需要被解析的命令行选项列表,默认是sys.argv[1:];

(2).values:用于传递命令行选项的附加参数值的对象;是optparse.Values类的对象;

返回值:是一个包含(options,args)对的tuple;

(1).options:与传递的options或者optparse对象相同,通过optparse创建的实例值;

(2).args:所有被处理的参数之后的剩余参数;




参考文献:

[1]. http://blog.csdn.net/xumingwei12345/article/details/51776884

[2]. https://docs.python.org/3/library/optparse.html

[3]. http://www.cnblogs.com/captain_jack/archive/2011/01/11/1933366.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值