简介
本文介绍的是argparse模块的基本使用方法,尤其详细介绍add_argument内建方法各个参数的使用及其效果。
本文翻译自argparse的官方说明,并加上一些笔者的理解
import argparse
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
const=sum, default=max,
help='sum the integers (default: find the max)')
args = parser.parse_args()
print(args.accumulate(args.integers))
如上示例,argparse模块的基本使用包含5个步骤:
- import模块:import argparse
- 获解析器对象:argparse.ArgumentParser
- 利用解析器对象内建方法,添加参数解析规则:add_argument
- 利用解析器对象内建方法,开始解析参数,获取解析结果对象:parse_args
- 从解析结果对象中,获取参数值:parse_args
解析器类(ArgumentParser)
在第2步中,我们通过ArgumentParser()
函数的调用获取了解析器对象ArgumentParser
。
在了解解析器对象的各个成员之前,我们先对一段正常的说明文本进行区间划分
# usage字段
usage: 程序名 [-h|--help] .....
# Description字段
程序功能描述
# 位置参数说明(必选)
positional arguments:
...
# 可选参数说明
optional arguments:
...
# 补充说明字段
...
例如
usage: PROG [-h] [--foo [FOO]] bar [bar ...]
bar help
positional arguments:
bar bar help
optional arguments:
-h, --help show this help message and exit
--foo [FOO] foo help
And that's how you'd foo a bar
关于位置参数与可选参数的理解,参考下一章节:添加参数解析规则
在上述的区间划的认识下,我们再来 看看解析器对象的成员及其功能名字 | 默认值 | 功能 |
---|---|---|
prog | sys.argv[0] | -h 时显示的程序名 |
usage | - | usage字段描述 |
description | None | description字段描述 |
epilog | None | 补充字段描述 |
parents | None | 从父(公共)解析器中继承所有的参数选项 |
formatter_class | None | 定制说明文本的显示风格 |
prefix_class | - | 定制前缀字符,例如前缀"-b"改为“+b" |
add_help | True | 是否使能显示参数 -h --help |
allow_abbrev | True | 是否支持长参数 |
fromfile_prefix_chars | None | 略 |
argument_default | None | 略 |
conflict_handler | None | 略 |
比较常用的是description,例如:
parser = argparse.ArgumentParser(description='Process some integers.')
或者
parser = argparse.ArgumentParser()
parser.descritpioin="Process some integers."
添加参数解析规则(add_argument)
add_argument是解析器类ArgumentParser的内建方法,用于向解析器添加参数解析规则
ArgumentParser.add_argument(name or flags...[, action][, nargs][, const][, default][, type]
[, choices][, required][, help][, metavar][, dest])
内建方法支持以下的关键字,我们会对每一个关键字及其效果做进一步说明
关键字 | 简介 |
---|---|
name or flags | 参数名或者"-/--"开头的选项,例如foo 或者-f, --foo |
action | 匹配到选项后的行为 |
nargs | 选项跟随的参数个数 |
const | 在某些action 和nargs 下,使用的固定值 |
default | 默认值 |
type | 参数类型 |
choices | 可选的参数值范围 |
required | 选项必选or可选 |
help | 参数描述 |