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



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

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

我看了几个论坛,我想答案是否定的,只是以防万一。有可能吗?

你不必相信任何人的话-试试看。

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,但该组没有"|"或"]"。用法格式化程序没有嵌套组的概念。它只是试图将这三个小组格式化,尽管它们是独立的。

但是你可以写你自己的用法行。

这种嵌套更有意义,因为gargument_group。然后,这些操作将被放置在一个不同的帮助组中。这两种群体在功能上截然不同。

http://bugs.python.org/issue17218使用此功能在argument_group中嵌套一个互斥组,以向MXG添加"title"one_answers"description"。有一个这样的例子,argparse单元测试文件Lib/test/test_argparse.py

相关内容

  • 没有找到相关文章

最新更新