optionparse模块简述
该模块的官方API: https://docs.python.org/3.7/library/optparse.html?highlight=optionparser#optparse.OptionParser
首先import该模块,然后创建一个对象,再利用parser.add_option(…)向其中添加参数,最后利用parse_args()进行解析。如下是一个简单的实例:
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_true", dest="verbose", default=True,
help="don't print status messages to stdout")
(options, args) = parser.parse_args()
parse_args()返回两个参数:options和args。options是根据相应规则保存的结果(有的博客上说是字典,官方API上:an object,说options.filename为对应的值),args是用list保存多余的部分。
add_option()中可以定义一个或者多个字符用来方便的传入参数,但至少应该有一个。add_option()中的主要参数有:action,type,dest,help。
action
action是最基本的,它告诉optparse当遇见传入的参数时应该怎么做(把值保存进变量的方式),这里列出action主要的可选项:store;store_true;store_false
store:stroe是默认选项,以上例来说,当遇见”-f“或”--file“时,就把下一个输入存入options.filename中,这里注意格式要与type一致。store_true上例中有一个,表示当遇见”-q“或”--quiet“,就将options.verbose设置为true,没遇见就设置为None;store_false则相反,当命令行出现对应字段是就设置为false。
"store_const"保存一个常数值。
"append"向list中添加一个参数。
"count"计数器加一。
"callback"调用特定的函数。
Default values
设置默认值:用default参数,action为store时就没什么讲的,有的话就保存,没得话看看有没有输入,再没就设为None。
parser.add_option("-v", action="store_false", dest="verbose", default=True)
#表示verbose默认设置为True,当有-v输入时,verbose变为false
parser.add_option("-v", action="store_true", dest="verbose")
#没输入时,verbose为None
还可以用set_defaults(verbose=True)函数进行初始值的设定,只要set_defaults在parse_args的前面任意位置都可以。
parser.set_defaults(verbose=True)
parser.add_option(...)
(options, args) = parser.parse_args()
Grouping Options
还可以进行分组,方便管理。
group = OptionGroup(parser, "Dangerous Options",
"Caution: use these options at your own risk. "
"It is believed that some of them bite.")
group.add_option("-g", action="store_true", help="Group option.")
parser.add_option_group(group)
一个稍微麻烦的,添加两个组。
group = OptionGroup(parser, "Dangerous Options",
"Caution: use these options at your own risk. "
"It is believed that some of them bite.")
group.add_option("-g", action="store_true", help="Group option.")
parser.add_option_group(group)
group = OptionGroup(parser, "Debug Options")
group.add_option("-d", "--debug", action="store_true",
help="Print debug information")
group.add_option("-s", "--sql", action="store_true",
help="Print all SQL statements executed")
group.add_option("-e", action="store_true", help="Print every action done")
parser.add_option_group(group)
用OptionParser.get_option_group(opt_str)进行读取组。