Python 的 optionparser 模块
文章目录
生成标准的、符合Unix/Posix 规范的命令行说明
|
|
简单流程
|
|
parse_args 和 add_options 函数
-
parse_args() 接收一个命令行列表,默认使用 sys.argv[:-1]
-
返回两个值,options 保存命令行参数值,args 是由 positional arguments 组成的列表
-
add_option() 用来加入选项,parse_args() 解析选项
1 2 3 4 5 6 7
from optparse import OptionParser parser = OptionParser() parser.add_option('-f', '--file', dest = 'filename', metavar = 'FILE', help = 'write report to FILE') parser.add_option('-q', '--quit', action = 'store_false', dest = 'verbose', default = True, help = 'Don\'t print status message to stdout.') (options, args) = parser.parse_args()
-
action 默认 store 表示将参数值保存到 options 对象里
1 2 3 4 5 6
from optparse import OptionParser parser = OptionParser() parser.add_option('-f', '--file', action = 'store', type = 'string', dest = 'filename') args = ['-f', 'foo.txt'] (options, args) = parser.parse_args(args) print options.filename
-
type 默认 ‘string’,也可以是 ‘int’ 或 ‘float’ 等,长参数名可选,dest 未指定时将用命令行的参数名来存取 options 对象的值
-
store 其他两种形式:store_true 和 store_false,还有 store_const、append、count、callback
1 2 3
parser.add_option('-v', action = 'store_true', dest = 'verbose') parser.add_option('-q', action = 'store_false', dest = 'verbose') #当解析到 '-v', options.verbose 为 True,解析到 '-q',options.verbose 为 False
-
default 设置参数默认值
1 2 3 4 5 6
parser.add_option('-f', action = 'store', dest = 'filename', default = 'foo.txt') parser.add_option('-v', action = 'store_true', dest = 'verbose', default = True) #也可以使用 set_default() parser.set_defaults(filename = 'foo.txt', verbose = True) parser.add_option(...) (options, args) = parser.parse_args()
-
help 生成帮助信息
1 2 3 4 5 6 7 8 9 10
usage = 'usage: %prog [options] arg1 arg2' parser = OptionParser(usage = usage) parser.add_option('-v', '--verbose', action = 'store_true', dest = 'verbose', default = True, help = 'make lots of noise [default]') parser.add_option('-q', '--quiet', action = 'store_false', dest = 'verbose', help = 'be very quiet') parser.add_option('-f', '--filename', metavar = 'FILE', help = 'write output to FILE') parser.add_option('-m', '--mode', metavar='MODE', default = 'intermediate', help = 'interaction mode: novice, intermediate, or expert [default: %default]')
备注
- optparse 解析到 help 后不再解析其他命令行参数,usage 信息会优先打印,默认 “usage: %prog [options]”
- metavar 提醒用户该参数期待的参数,如 metavar = ‘mode’ 会在帮助中显示成 -m MODE, –mode=MODE
OptionGroup 参数分组
|
|
- version 创建OptionParser对象时指定该参数,会解释成 –version 命令行参数
- optparser 可以自动探测并处理一些用户异常,也可以使用 parser.error() 方法来自定义部分异常的处理
1 2
if options.a and options.b: parser.error('options -a and -b are mutually exclusive')
文章作者 Colben
上次更新 2019-10-30