0%

python argparse 模块笔记

argparse是python中的一个模块,参考官方文档来理解它 argparse — Parser for command-line options, arguments and sub-commands

第一句介绍就是The argparse module makes it easy to write user-friendly command-line interfaces, 所以这个模块是用于写命令行接口的,使得脚本友好的从命令行传入参数。

导入

1
import argparse

创建一个parser对象

1
parser = argparse.ArgumentParser()

添加参数

1
2
parser.add_argument('integers', metavar='N', type=int, nargs='+',
help='an integer for the accumulator')

这里添加了一个叫做integers的参数,它的类型是int
metavar是用于在help里面来表示这个数的,本来是help里面会使用integers这个名字,这里就会被替换为N
nargs表示这个参数后面可以跟的输入的个数,这里的’+’表示一个或者多个,
help是在打印help信息时给出的提示。

例如下面脚本:

1
2
3
4
5
6
7
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--foo', nargs=2, metavar='f')
parser.add_argument('bar', nargs=1)

args = parser.parse_args()
print(args)

先在命令行中调用帮助信息,

1
2
3
4
5
6
7
8
9
10
$ python .\test.py -h

usage: test.py [-h] [--foo f f] bar

positional arguments:
bar

optional arguments:
-h, --help show this help message and exit
--foo f f

输入正确的参数个数和错误的参数个数,

1
2
3
4
5
6
7
8
9
10
11
12
13
$ python .\test.py --foo a b 1

Namespace(bar=['1'], foo=['a', 'b'])

$ python .\test.py --foo a b

usage: test.py [-h] [--foo FOO FOO] bar
test.py: error: the following arguments are required: bar

$ python .\test.py --foo a b c 2

usage: test.py [-h] [--foo FOO FOO] bar
test.py: error: unrecognized arguments: 2

另外有时候,可能需要使用下面的函数来返回输入参数,

1
FLAGS, unparsed = parser.parse_known_args()

这里的意思就是说对于认识的参数,存到FLAGS里面,对于不认识的参数,存到unparsed里面。

参考

argparser模块学习