前言
打算写一系列文章来记录自己学习 Python 3 的点滴;
ArgumentParser
概述
ArgumentParser 的参数解析非常强大,总体上,提供了两类解析参数的方式;1) Positional arguments,既是必须输入的参数 2)Optional arguments,既是可选参数;两种参数定义的方式不同;
Positional Arguments 必填参数
如何定义
prog.py1
2
3
4
5import argparse
parser = argparse.ArgumentParser()
parser.add_argument("square")
args = parser.parse_args()
print(args.echo)通过 parser.add_argument(“square”) 我们便定义了一个必填参数(Positional Argument);注意,必填参数前面不接
-
或者--
这样的描述符;或者,我们可以给出更多的针对 echo 的描述信息,1
2
3
4
5import argparse
parser = argparse.ArgumentParser()
parser.add_argument("square", help="display a square of a given number", type=int)
args = parser.parse_args()
print(args.echo)- 通过 help 参数给出更多的描述信息;
这个时候,我们便可以使用 -h 命令得到该描述信息了; - 通过 type 指定参数的类型
1
2
3
4
5
6$ python3 prog.py -h
usage: prog.py [-h] square
positional arguments:
square display a square of a given number
......- 通过 help 参数给出更多的描述信息;
执行
首先,如果我们不带参数执行 prog.py,可见,会报错,告诉我们 square 参数必填;1
2
3$ python3 prog.py
usage: prog.py [-h] square
prog.py: error: the following arguments are required: square正确执行,
1
2$ python3 prog.py 4
16这里要注意的是,Positional Argument 的写法,直接
写值
即可,不用跟任何参数名,比如 square=4
Optional Arguments 可选参数
正好与 Positional Arguments 相对应,它表示,该参数是可有可无;
如何定义
prog.py1
2
3
4
5
6
7import argparse
parser = argparse.ArgumentParser()
parser.add_argument("-v", "--verbose", help="increase output verbosity",
action="store_true")
args = parser.parse_args()
if args.verbose:
print("verbosity turned on")可以看到,还是通过 ArgumentParser.add_argument 方法进行定义,区别是,前面需要跟前缀
-
或者--
;上面的定义方式表示- -v 是 –verbose 的缩写;
- action=”store_true” 表示,如果执行的时候只要指定了参数 -v 或者 –verbose,其解析值为 true
- 执行
1
2
3
4
5$ python3 prog.py --verbose
verbosity turned on
# 或者
$ python3 prog.py --v
verbosity turned on