是否可以使用argparse(Python)在另一个组内创建互斥组?

时间:2014-04-25 11:51:32

标签: python argparse

我在Python中使用 argparse ,我需要在控制台中执行此操作:

python3 my_program.py (-a | -b) | (-c | -d)

我读了几个论坛,我猜答案是否定的,但以防万一。有可能吗?

1 个答案:

答案 0 :(得分:1)

你不必接受任何人的话 - 试试吧。

import argparse
parser=argparse.ArgumentParser()
g = parser.add_mutually_exclusive_group()
g1 = g.add_mutually_exclusive_group()
g1.add_argument('-a')
g1.add_argument('-b')
g2 = g.add_mutually_exclusive_group()
g2.add_argument('-c')
g2.add_argument('-d')
print [a.dest for a in g._group_actions]
print [a.dest for a in g1._group_actions]
print [a.dest for a in g2._group_actions]
parser.print_help()
制造

['a', 'b', 'c', 'd']  # actions in group g
['a', 'b']
['c', 'd']
usage: stack23292325.py [-h] [[-a A | -b B] [-c C | -d D]

g1g2可以在另一个组g中定义,但是它会使4个操作互相排斥。如果你考虑一下,这在逻辑上是正确的。

使用行不太正确。第一个' ['来自g,但没有' |'或者']'为那个小组。使用格式化程序没有嵌套组的概念。虽然它们是独立的,但它只是尝试格式化3组。

但你可以写自己的用法线。

这种嵌套更有意义gargument_group。然后,操作将放在不同的帮助组中。两种群体功能完全不同。

http://bugs.python.org/issue17218使用此功能在argument_group中嵌套一个mutual_exclusive_group,以添加一个'标题'和'描述'到MXG。这是argparse单元测试文件Lib/test/test_argparse.py的一个例子。