argparse add_argument别名

wal*_*ala 10 python argparse

有没有办法使用argparse创建别名?

例如,我想做这样的事情:

parser.add_argument('--foo' ...)
parser.add_argument_alias('--bar', '--foo')
Run Code Online (Sandbox Code Playgroud)

也就是说,使用--bar应该等同于使用--foo.

Jon*_*han 7

您可以简单地致电:

parser.add_argument('--foo', '--bar', ...)
Run Code Online (Sandbox Code Playgroud)

至少对于Python 3.5。

这就是我在ipython以下方面进行测试的方式:

In [1]: import argparse

In [2]: parser = argparse.ArgumentParser()

In [3]: parser.add_argument('--foo', '--bar')
Out[3]: _StoreAction(option_strings=['--foo', '--bar'], dest='foo', nargs=None, const=None, default=None, type=None, choices=None, help=None, metavar=None)

In [4]: parser.parse_args(['--foo', 'FOO'])
Out[4]: Namespace(foo='FOO')

In [5]: parser.parse_args(['--bar', 'FOO'])
Out[5]: Namespace(foo='FOO')
Run Code Online (Sandbox Code Playgroud)


phi*_*294 5

不完全符合您的要求,但是当您想要为键值组合添加别名时,因为 in--bar应该相当于使用 using --foo=baz,您可以使用该dest参数:

parser.add_argument('--bar', dest='foo', action='store_const', const='baz')
Run Code Online (Sandbox Code Playgroud)