API原文链接
argparse --- 命令行选项、参数和子命令解析器 — Python 3.10.5 文档
argparse 模块可以让人轻松编写用户友好的命令行接口。程序定义它需要的参数,然后 argparse 将弄清如何从 sys.argv 解析出那些参数。 argparse 模块还会自动生成帮助和使用手册,并在用户给程序传入无效参数时报出错误信息。
一、创建一个解析器
使用 argparse 的第一步是创建一个 ArgumentParser 对象:
1、ArgumentParser()的方法
2、示例
>>> parser = argparse.ArgumentParser()
ArgumentParser 对象包含将命令行解析成 Python 数据类型所需的全部信息。
二、添加参数
给一个 ArgumentParser 添加程序参数信息是通过调用 add_argument() 方法完成的
1、add_argument()方法
ArgumentParser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])
-
name or flags - 一个命名或者一个选项字符串的列表,例如
foo
或-f, --foo
。第一个传递给 add_argument() 的参数必须是一系列 flags 或者是一个简单的参数名。当 parse_args() 被调用,选项会以-
前缀识别,剩下的参数则会被假定为位置参数。 -
parser.add_argument('-f', '--foo')
-
action - 当参数在命令行中出现时使用的动作基本类型。
-
'store'
- 存储参数的值。这是默认的动作'store_const'
- 存储被 const 命名参数指定的值。'store_const'
动作通常用在选项中来指定一些标志>>> parser.add_argument('--foo', action='store_const', const=42) >>> parser.parse_args(['--foo']) Namespace(foo=42)
'store_true'
and'store_false'
- 这些是'store_const'
分别用作存储True
和False
值的特殊用例。另外,它们的默认值分别为False
和True
'append'
- 存储一个列表,并且将每个参数值追加到列表中。在允许多次使用选项时很有用。'append_const'
- 这存储一个列表,并将 const 命名参数指定的值追加到列表中。(注意 const 命名参数默认为None
。)``'append_const'`` 动作一般在多个参数需要在同一列表中存储常数时会有用'count'
- 计算一个关键字参数出现的数目或次数'extend'
- 这会存储一个列表,并将每个参数值加入到列表中 -
nargs - 命令行参数应当消耗的数目。
-
default - 当参数未在命令行中出现并且也不存在于命名空间对象时所产生的值。
-
type - 命令行参数应当被转换成的类型。
-
choices - 可用的参数的容器。
-
required - 此命令行选项是否可省略 (仅选项可用)。
-
help - 一个此选项作用的简单描述。
-
metavar - 在使用方法消息中使用的参数值示例。
-
dest - 被添加到 parse_args() 所返回对象上的属性名。
2、示例
>>> 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)')
三、解析参数
1、parse_args()方法
ArgumentParser.
parse_args
(args=None, namespace=None)
将参数字符串转换为对象并将其设为命名空间的属性。 返回带有成员的命名空间。
2、示例
>>> parser = argparse.ArgumentParser(prog='PROG') >>> parser.add_argument('-x') >>> parser.add_argument('--foo') >>> parser.parse_args(['-x', 'X']) Namespace(foo=None, x='X') >>> parser.parse_args(['--foo', 'FOO']) Namespace(foo='FOO', x=None)