Python:内置模块argparse

argparse是什么?

argparse 是 Python 内置的一个用于命令项选项与参数解析的模块,通过在程序中定义好我们需要的参数,argparse 将会从 sys.argv 中解析出这些参数,并自动生成帮助和使用信息。

argparse如何使用?

首先来看一看ArgumentParser对象的相关属性

属性 解释 默认值
prog 程序的名称 sys.argv
usage 描述程序用途的字符串 自动生成
description 在参数帮助文档之前显示的文本 None
epliog 在参数帮助文档之前显示的文本 None
parents 在参数帮助文档之后显示的文本同上一个ArgumentParser对象的列表,它们的参数也应包含在内 []
prefix_chars 可选参数的前缀字符集合 ‘_’
formatter_class 用于自定义帮助文档输出格式的类 argparse.HelpFormatter
formfile_prefix_chars 当需要从文件中读取其他参数时,用于标识文件名的前缀字符集合 None
argument_default 参数的全局默认值 None
conflict_handler 解决冲突选项的策略 ‘error’
add_help 为解析器添加一个-h/–help 选项 Ture
allow_abbrev 如果缩写是无歧义的,则允许缩写长选项 Ture
exit_on_ 决定当错误发生时是否让 ArgumentParser 附带错误信息退出 Ture

一次简单的对argparse的使用主要有三个步骤:

  1. 创建ArgumentParser()对象
  2. 调用add_argument()函数添加参数
  3. 使用parse_args()解析添加的参数

示例:

1
2
3
4
5
6
7
8
9
10
#导入argparse模块
import argparse
# 创建解析器
parser = argparse.ArgumentParser(description='desc')
# 添加整型参数
parser.add_argument('--integers', type=int, default=0, help='input an integer')
# 解析参数parse_args()通常不带参数调用,ArgumentParser将自动从sys.argv确定命令行参数。
args = parser.parse_args()
#返回一个具有integers属性的对象 Namespace(integers=0)
print(args)

结果:

1
Namespace(integers=0)

示例中的add_argument()方法:

1
2
3
4
5
6
7
8
9
10
11
ArgumentParser.add_argument(name or flags...,
action='',
nargs='',
const,
default,
type,
choices,
required,
help,
metavar,
dest)

其中的参数:

add_argument(‘-f’, ‘–foo’) # 可选参数
add_argument(‘foo’) # 位置参数
action #该action关键字参数指定的命令行参数应该如何处理
action = ‘store’ # 默认操作仅存储参数的值,可以不写
action = ‘store_const’ # 将存储由const关键字参数指定的值
action = ‘store_true’ # 这些是’store_const’分别存储值True和False的情况下使用
action = ‘store_false’
action = ‘append’ # 存储一个列表,并将命令行的每个参数值附加到列表中
action = ‘append_const’ # 存储一个列表,并将const关键字参数指定的值附加到列表中,可用于多个参数需要将常量存储到同一列表,const默认参数为None
action = ‘count’ # 计算关键字参数出现的次数
action = ‘extend’ # 存储一个列表,并将每个参数值添加到列表中
nargs : 将单个命令行参数与要执行的单个操作相关联,并收集到一个列表中
nargs = N(一个整数) # nargs=2,命令行python test.py –foo a b 将a,b收集到一个列表中
nargs = ? # 表示从命令行使用一个参数,作为选项参数的值,如果命令行指定了参数的值则使用(python test.py –foo xx),如果不存在命令行参数(python test.py),使用default默认值,如果存在可选项参数(python test.py –foo),但是没有指定参数值,会使用const的值。
nargs = * # 存在的所有命令行参数都收集到一个列表中
nargs = + # 跟*用法一样,都会收集到一个列表中,但是如果没有命令行参数则会报错
default # 指定默认值
type # 指定类型 int float等
choices # 指定某些命令行参数应从一组受限制的值中选择,如果参数不是可接受的值一直,则报错
required=True # 指定参数值为必填
help #帮助信息说明