简介
optparse
模块也是python内置的一种命令行参数处理模块,用法比getopt
模块要简单,功能也更强大
不过此模块在python 3.2版本之后就弃用了,换成了argparse
,这个在下一次再学习
这里还是从一个实例来学习
一个实例
代码
import optparse
usage = "usage: %prog [options] arg1 arg2"
parse = optparse.OptionParser(usage=usage, version="%prog v1.0")
parse.add_option("-o", "--output", dest="filename", help="write to file")
parse.add_option("-v", "--verbose", action="store_true", dest="verbose", default=False,
help="print status messages to stdout")
parse.add_option("-n", type=int, dest="num", help="input a int number", metavar="NUMBER", default = 0)
opts, args = parse.parse_args()
print("opts = %s, args = %s" %(opts, args))
print("filename = %s, verbose = %s, num = %d" % (opts.filename, opts.verbose, opts.num))
这里添加的选项没有-h
和--help
,但是可以直接使用,如下
itsenlin@itsenlin-PC:~/Desktop/python_test$ python optparsetest.py -h
Usage: optparsetest.py [options] arg1 arg2
Options:
--version show program's version number and exit
-h, --help show this help message and exit
-o FILENAME, --output=FILENAME
write to file
-v, --verbose print status messages to stdout
-n NUMBER input a int number
itsenlin@itsenlin-PC:~/Desktop/python_test$
模块的使用步骤
从上面实例源码中就可以看出,此模块使用的很简单,只需要三步
创建一个OptionParser
对象
在一个程序打印使用帮助信息时,最常用的两个:
- usage信息,用于打印一个程序的总体用法
- version信息,用于打开一个程序的版本
这两个信息是在创建OptionParser
对象时要提供的
optparse.OptionParser(usage=usage, version="%prog v1.0")
说明:这里的%prog打印的程序名,也可以使用
os.path.basename(sys.argv[0])
其他更多的参数,参考官方文档:创建解析器
调用add_option()
添加选项信息
函数原型如下:
OptionParser.add_option(option)
OptionParser.add_option(*opt_str, attr=value, ...)
-
opt_str
包含长选项字符串,以及短选项字符,两者可以同时存在,也可以只填其中一个,如下parser.add_option("-o", attr=value, ...) parser.add_option("--output", attr=value, ...) parser.add_option("-o", "--output", attr=value, ...)
-
attr=value
表示此选项的一些属性, 这些属性保证了此模块的强大功能,下面说明一些常用的属性属性 默认值 说明 Option.action "store" Option.type "string" 此选项需要的参数类型 Option.dest 从选项字符串派生 可以做为存储此选项值的变量供程序使用 Option.default NA 选项的默认值 Option.help NA 选项的说明信息 Option.metavar 从选项字符串派生 选项需要参数时,帮助信息中显示 action属性说明
当action使用默认值时可以不显示配置此属性,除了默认值最常用的两个值是
store_true
和store_false
,分别表示当命令行中有此选项时,程序中此选项对应的变量值是True
和False
,例如parse.add_option("-v", "--verbose", action="store_true", dest="verbose", default=False, help="print status messages to stdout")
当命令行中使用
-v
或者--verbose
选项时,变量verbose
的值就是True
,程序中后面就可以通过这个变量来做一些处理。
其他更多用法参考官方文档:定义选项和option属性、option组
调用parse_args()
解析命令行,并将解析结果返回
函数原型:
(options, args) = parser.parse_args(args=None, values=None)
- 函数参数一般不填
- 返回值有两个,与
getopt
很类似;第一个返回值存放所有的选项相关信息;第二个返回值存放所有的参数信息
例如前面子的打印信息如下
itsenlin@itsenlin-PC:~/Desktop/python_test$ python optparsetest.py -v -o test.log
opts = {'filename': 'test.log', 'verbose': True, 'num': 0}, args = []
filename = test.log, verbose = True, num = 0
itsenlin@itsenlin-PC:~/Desktop/python_test$ python optparsetest.py -v -o test.log -n 3
opts = {'filename': 'test.log', 'verbose': True, 'num': 3}, args = []
filename = test.log, verbose = True, num = 3
itsenlin@itsenlin-PC:~/Desktop/python_test$
itsenlin@itsenlin-PC:~/Desktop/python_test$ python optparsetest.py -v -o test.log -n 3 a b c
opts = {'filename': 'test.log', 'verbose': True, 'num': 3}, args = ['a', 'b', 'c']
filename = test.log, verbose = True, num = 3
itsenlin@itsenlin-PC:~/Desktop/python_test$ python optparsetest.py 1 2 -v -o test.log -n 3 a b c
opts = {'filename': 'test.log', 'verbose': True, 'num': 3}, args = ['1', '2', 'a', 'b', 'c']
filename = test.log, verbose = True, num = 3
itsenlin@itsenlin-PC:~/Desktop/python_test$
从上面用法的打印结果可以看出两个返回值存放的信息;以及选项对应变量的使用
网友评论