Python Argparse允许组合标志



Argparse可以将其组合在一起的标志可以:

app.py -bcda something

在这种情况下,我希望将something设置为-a,其余的将是TRUE。基本上:

app.py -b -c -d -a something

我知道大多数程序都允许这样做,例如grep -rEw,但是使用ArgParse进行此操作会多么困难?

您可以使用Store_const:

实现此目标
parser = argparse.ArgumentParser()
parser.add_argument('-a', action='store_const', const=True, default=False)
parser.add_argument('-b', action='store_const', const=True, default=False)
args = parser.parse_args()

然后,您可以使用-a -b-ab(或-a-b)从命令行调用此。

编辑:如果您希望其中一个标志进行参数,则需要将其作为链的最后一项。因此,如果a进行参数,则需要做-bcda something

这是我通过少量谷歌搜索发现的:

只能使用一个 - 前缀,只要只有最后一个选项(或没有)需要一个 价值:

>>> parser = argparse.ArgumentParser(prog='PROG')
>>> parser.add_argument('-x', action='store_true')
>>> parser.add_argument('-y', action='store_true')
>>> parser.add_argument('-z')
>>> parser.parse_args('-xyzZ'.split())
Namespace(x=True, y=True, z='Z')

http://docs.python.org/dev/library/argparse.html#option-value-syntax

最新更新