官方文档:官方教程
简介
argparse 是一个命令行选项、参数和子命令解释器模块,方便编写用户友好的命令行接口。模块可以解析程序定义的参数,还会自动生成帮助和使用手册,并在用户给程序传入无效参数时报出错误信息。
基础
让我们先来看一个简单的例子(没有做任何事情):
import argparse
parser = argparse.ArgumentParser()
parser.parse_args()
我们运行的结果:
$ python3 prog.py
$ python3 prog.py --help
usage: prog.py [-h]
optional arguments:
-h, --help show this help message and exit
$ python3 prog.py --verbose
usage: prog.py [-h]
prog.py: error: unrecognized arguments: --verbose
$ python3 prog.py foo
usage: prog.py [-h]
prog.py: error: unrecognized arguments: foo
–help 和 -h等价,都会输出一个友好的输出。
定义可选参数
An example:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("echo")
args = parser.parse_args()
print(args.echo)
结果:
$ python3 prog.py
usage: prog.py [-h] echo
prog.py: error: the following arguments are required: echo
$ python3 prog.py --help
usage: prog.py [-h] echo
positional arguments:
echo
optional arguments:
-h, --help show this help message and exit
$ python3 prog.py foo
foo
可以看到,我们用add_argument()添加了一个可选参数echo,通过help查看信息,可以看到有echo,但是仅仅出现这个参数,他的类型我们并不知道。
更加丰富的输出信息
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("echo", help="echo the string you use here")
args = parser.parse_args()
print(args.echo)
$ python3 prog.py -h
usage: prog.py [-h] echo
positional arguments:
echo echo the string you use here
optional arguments:
-h, --help show this help message and exit
argparse针对我们给出的参数当作str类型。我们可以用type指定参数类型。
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("square", help="display a square of a given number",
type=int)
args = parser.parse_args()
print(args.square**2)
$ python3 prog.py 4
16
$ python3 prog.py four
usage: prog.py [-h] square
prog.py: error: argument square: invalid int value: 'four'
详细看一下 add_aargument() 函数的参数
name_or_flags:字符类型,可以添加全称,也可以添加简称,可以为必选参数,也可以为非必选参数。
type 定义参数的类型,程序自动检查,方便对数据进行验证过。
help 定义该参数的帮助信息,使用 --help 的时候会在参数后面显示。
default 参数默认值,设置参数的默认值,当缺省的时候自动补充
action 命令行遇到参数时候的动作,默认是store (存储)
定义可选参数
可选参数与必选参数的区别是在参数名称前加入“–”。
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--verbosity", help="increase output verbosity")
args = parser.parse_args()
if args.verbosity:
print("verbosity turned on")
$ python3 prog.py --verbosity 1
verbosity turned on
$ python3 prog.py
$ python3 prog.py --help
usage: prog.py [-h] [--verbosity VERBOSITY]
optional arguments:
-h, --help show this help message and exit
--verbosity VERBOSITY
increase output verbosity
$ python3 prog.py --verbosity
usage: prog.py [-h] [--verbosity VERBOSITY]
prog.py: error: argument --verbosity: expected one argument
可以看到,我们在运行程序的时候,要求我们输入一个参数,非0值作为TRUE。
action=“store_true”
当然我们可以用action参数,指定为"store_true"。
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--verbose", help="increase output verbosity",
action="store_true")
args = parser.parse_args()
if args.verbose:
print("verbosity turned on")
$ python3 prog.py --verbose
verbosity turned on
$ python3 prog.py --verbose 1
usage: prog.py [-h] [--verbose]
prog.py: error: unrecognized arguments: 1
$ python3 prog.py --help
usage: prog.py [-h] [--verbose]
optional arguments:
-h, --help show this help message and exit
--verbose increase output verbosity
官方解释:
- The option is now more of a flag than something that requires a value. We even changed the name of the option to match that idea. Note that we now specify a new keyword, action, and give it the value “store_true”. This means that, if the option is specified, assign the value True to args.verbose. Not specifying it implies False.
就是我们指定了store_true后,当我们运行程序挂上参数后,不用另外加参数值,就相当于TRUE,当不指定–verbose时,就为false。
action=“count”
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("square", type=int,
help="display the square of a given number")
parser.add_argument("-v", "--verbosity", action="count",
help="increase output verbosity")
args = parser.parse_args()
answer = args.square**2
if args.verbosity == 2:
print("the square of {} equals {}".format(args.square, answer))
elif args.verbosity == 1:
print("{}^2 == {}".format(args.square, answer))
else:
print(answer)
$ python3 prog.py 4
16
$ python3 prog.py 4 -v
4^2 == 16
$ python3 prog.py 4 -vv
the square of 4 equals 16
$ python3 prog.py 4 --verbosity --verbosity
the square of 4 equals 16
$ python3 prog.py 4 -v 1
usage: prog.py [-h] [-v] square
prog.py: error: unrecognized arguments: 1
$ python3 prog.py 4 -h
usage: prog.py [-h] [-v] square
positional arguments:
square display a square of a given number
optional arguments:
-h, --help show this help message and exit
-v, --verbosity increase output verbosity
$ python3 prog.py 4 -vvv
16
小编看的一部分,剩下的可以去官方教程去看。
官方教程