add_argument() 方法之help,metavar,dest,Action类,parse_args() 方法

help

help 值是一个包含参数简短描述的字符串。 当用户请求帮助时(一般是通过在命令行中使用 -h 或 --help 的方式),这些 help 描述将随每个参数一同显示。help 字符串可包括各种格式描述符以避免重复使用程序名称或参数 default 等文本。 有效的描述符包括程序名称 %(prog)s 和传给 add_argument() 的大部分关键字参数,例如 %(default)s, %(type)s 等等。由于帮助字符串支持 %-formatting,如果希望在帮助字符串中显示 % 字面值,你必须将其转义为 %%。

>>> parser = argparse.ArgumentParser(prog='frobble')

>>> parser.add_argument('bar', nargs='?', type=int, default=42, help='the bar to %(prog)s (default: %(default)s)')

>>> parser.print_help()

usage: frobble [-h] [bar]

positional arguments:

bar    the bar to frobble (default: 42)

optional arguments:

-h, --help  show this help message and exit

argparse 支持静默特定选项的帮助,具体做法是将 help 的值设为 argparse.SUPPRESS:

>>> parser = argparse.ArgumentParser(prog='frobble')

>>> parser.add_argument('--foo', help=argparse.SUPPRESS)

>>> parser.print_help()

usage: frobble [-h]

optional arguments:

  -h, --help  show this help message and exit

metavar

当 ArgumentParser 生成帮助消息时,它需要用某种方式来引用每个预期的参数。 默认情况下,ArgumentParser 对象使用 dest 值作为每个对象的 "name"。 默认情况下,对于位置参数动作,dest 值将被直接使用,而对于可选参数动作,dest 值将被转为大写形式。 因此,一个位置参数 dest='bar' 的引用形式将为 bar。 一个带有单独命令行参数的可选参数 --foo 的引用形式将为 FOO。 示例如下:

metavar 仅改变 显示的 名称 - parse_args() 对象的属性名称仍然会由 dest 值确定。

metavar实例

不同的 nargs 值可能导致 metavar 被多次使用。 提供一个元组给 metavar 即为每个参数指定不同的显示信息:

>>> parser = argparse.ArgumentParser(prog='PROG')

>>> parser.add_argument('-x', nargs=2)

>>> parser.add_argument('--foo', nargs=2, metavar=('bar', 'baz'))

>>> parser.print_help()

usage: PROG [-h] [-x X X] [--foo bar baz]

optional arguments:

-h, --help    show this help message and exit

-x X X

--foo bar baz

Dest

大多数 ArgumentParser 动作会添加一些值作为 parse_args() 所返回对象的一个属性。 该属性的名称由 add_argument() 的 dest 关键字参数确定。 对于位置参数动作,dest 通常会作为 add_argument() 的第一个参数提供:

>>> parser = argparse.ArgumentParser()

>>> parser.add_argument('bar')

>>> parser.parse_args(['XXX'])

Namespace(bar='XXX')

对于可选参数动作,dest 的值通常取自选项字符串。 ArgumentParser 会通过接受第一个长选项字符串并去掉开头的 --字符串来生成 dest 的值。 如果没有提供长选项字符串,则 dest 将通过接受第一个短选项字符串并去掉开头的 - 字符来获得。 任何内部的 - 字符都将被转换为 _ 字符以确保字符串是有效的属性名称。 下面的例子显示了这种行为:

>>> parser = argparse.ArgumentParser()

>>> parser.add_argument('-f', '--foo-bar', '--foo')  #长选项字符串--foo-bar

>>> parser.add_argument('-x', '-y')#短选项字符串-x

>>> parser.parse_args('-f 1 -x 2'.split())

Namespace(foo_bar='1', x='2')

>>> parser.parse_args('--foo 1 -y 2'.split())

Namespace(foo_bar='1', x='2')#取长选项字符串--foo-bar设置dest值为foo_bar,取第一个短选项字符串设置dest值x。

dest 允许提供自定义属性名称:

>>> parser = argparse.ArgumentParser()

>>> parser.add_argument('--foo', dest='bar') #自定义为bar

>>> parser.parse_args('--foo XXX'.split())

Namespace(bar='XXX')

Action类

Action 类实现了 Action API,返回一个可调用对象的可调用对象,返回的可调用对象可处理来自命令行的参数。 任何遵循此 API 的对象均可作为 action 形参传给 add_argument()。

parse_args() 方法

ArgumentParser.parse_args(args=Nonenamespace=None)

将参数字符串转换为对象并将其设为命名空间的属性。 返回带有成员的命名空间。

args - 要解析的字符串列表。 默认值是从 sys.argv 获取。

namespace - 用于获取属性的对象。 默认值是一个新的空 Namespace 对象。

你可能感兴趣的:(add_argument() 方法之help,metavar,dest,Action类,parse_args() 方法)