Python学习之optparse

optparse

在使用python进行命令开发的过程中,经常需要使用的就是命令行参数了,本章节介绍一个功能强大,易于使用的内建命令行参数处理模块optparse。

简单的使用

首先需要创建一个OptionParser对象,该类属于optparse模块,因此使用前需要导入。

1
2
3
4
5
6
7
from optparse import OptionParser
parser = OptionParser(usage="usage: %prog action [options]",)
import optparse
parser = optparse.OptionParser(usage="usage: %prog action [options]",)

可以不写参数,参数用来指定帮助的显示信息,如果没有指定,则默认显示“usage: %prog [options]”。

构造方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def __init__(self,
usage=None,
option_list=None,
option_class=Option,
version=None,
conflict_handler="error",
description=None,
formatter=None,
add_help_option=True,
prog=None,
epilog=None):
作者:fuyoufang
链接:https://www.jianshu.com/p/bec089061742
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

add_option函数

创建OptionParser对象之后,就可以使用add_option来定义命令行参数了

1
parsser.add_option(...)

参数

add_option的前两参数分别为短参数名和长参数名。其中长参数名可以省略。

1
parser.add_option("-f", dest="fileName")

dest

定义程序内参数值的名字,之后通过这个名字来取参数的值。如果为空,则使用不加“-”的短参数名。

action

action是add_option的一个参数,用来指定解析到参数后的操作。默认值为“store”,表示将参数值保存到options对象中。

1
2
3
parser.add_option("-f", "--file", action="store", dest="filename")
(options, args) = parser.parse_args(["-f", "myfile.log"])
print options.filename

其中action值的store还可以有其他两种类型:store_ture和store_false,用来处理不带参数值的参数。

1
2
parser.add_option("-g", action="store_true", dest="isGoodUser")
parser.add_option("-s", action="store_false", dest="isGoodUser")

action可以使用的值出了store_true和store_false之外,还可以使用store、store_const、append、count、callback等。

type

type是add_option方法的一个参数,用来指定参数值的类型,默认为String。还可以指定为“int”、“float”等

1
parser.add_option("-n", type="int", dest="num")

default

通过add_option方法的default参数可以对命令行参数设置默认值。

1
parser.add_option("-f", "--file", default="test.log")

help

用于指定参数在帮助程序中显示的信息,详细请见下方的“生成帮助”章节。

metavar

metavar配合help参数,用于帮助提醒用户该命令行所期待的参数,详细请见下方的“生成帮助”章节。

choices

当type为choices时,需要设置此值。

const

指定一个常数,配合action为store_const和append_const时一起使用。

parse_args函数

一旦定义好了所有的命令行参数,就可以调用parse_args()来解析命令行。

1
(options, args) = parser.parse_args()

参数

你可以传递一个命令行参数列表给parse_args方法,否则默认使用sys.argv[:1]。
parse_args方法有两个返回值:

options optpars.Values对象,保存了所有命令行的值。只要知道命令行参数名,就可以得到。
args 一个由 positional arguments组成的列表。

set_defaults函数

除了在add_option方法中使用default参数设置默认值,还可以使用set_default函数,来统一设置默认值。该方法应该在所有add_option函数之前调用。

1
parser.set_default(filename="test.log", isGoodUser=False)

set_defaults函数,可以用来设置多个默认值。

has_option方法

用来检查是否有相应的选项

1
print parser.has_option("fileName")

remove_option()

用来删除相应的选项。

1
print parser.remove_option("fileName")

生成帮助

optparse的另一个方便的功能便是自动生成帮助,而你需要做的事情就是在调用add_option方法时指定help参数。

1
2
parser = optparse.OptionParser(usage="usage: %prog action [options]",)
parser.add_option("-v", action="store_true", metavar="参数的期望值", help="这是-v的参数的意义")

当optparse解析到-h或者–help时,就会调用parser.print_help()方法来打印帮助信息。

分组

异常处理

在出现用户输入无效的、不完整的命令行参数而发生异常时,optparse可以自动检测并处理,比如参数值类型错误等。
用户也可以使用parser.error函数来手动抛出异常。

1
2
3
parser.parse_args()
if parser.isGooodUser:
parse.error("this is an exception")