gpt4 book ai didi

python - argparse 帮助消息中互斥的组标题和描述

转载 作者:太空宇宙 更新时间:2023-11-03 13:10:04 24 4
gpt4 key购买 nike

为什么我不能有一个带有titledescriptionargparse 互斥组,以便它显示为一个单独的类别在 --help 消息下?

我有一个带有名称和描述的选项组:

import argparse

parser = argparse.ArgumentParser()

group = parser.add_argument_group(
'foo options', 'various (mutually exclusive) ways to do foo')
group.add_argument('--option_a', action='store_true', help='option a')
group.add_argument('--option_b', action='store_true', help='option b')

args = parser.parse_args()

--help 的输出:

usage: foo.py [-h] [--option_a] [--option_b]

optional arguments:
-h, --help show this help message and exit

foo options:
various (mutually exclusive) ways to do foo

--option_a option a
--option_b option b

但我想让组互斥:

import argparse

parser = argparse.ArgumentParser()

group = parser.add_mutually_exclusive_group() # here
group.add_argument('--option_a', action='store_true', help='option a')
group.add_argument('--option_b', action='store_true', help='option b')

args = parser.parse_args()

--help 的输出:

usage: foo.py [-h] [--option_a | --option_b]

optional arguments:
-h, --help show this help message and exit
--option_a option a
--option_b option b

帮助消息中没有区分这些选项是组的一部分,我无法指定标题/描述(add_mutually_exclusive_group 不接受额外的位置参数)。有人有解决方法吗?

最佳答案

为什么?因为它就是这样编码的!

互斥组是ArgumentGroups的子类,只是接口(interface)不同。目的也大不相同。参数组控制帮助行的显示。它对解析没有任何作用。互斥组在解析期间检查参数,并在格式化使用行时使用。但它对求助热线没有影响。

但是可以在参数组中嵌入互斥组(但反之则不行)。那应该会产生您想要的结果。

In [2]: parser = argparse.ArgumentParser()
In [3]: group = parser.add_argument_group(
...: 'foo options', 'various (mutually exclusive) ways to do foo')
In [4]: mxg = group.add_mutually_exclusive_group()
In [5]: mxg.add_argument('--option_a', action='store_true', help='option a');
In [6]: mxg.add_argument('--option_b', action='store_true', help='option b');

In [7]: parser.print_help()
usage: ipython3 [-h] [--option_a | --option_b]

optional arguments:
-h, --help show this help message and exit

foo options:
various (mutually exclusive) ways to do foo

--option_a option a
--option_b option b

代码本身以及一两个错误/问题中有更多详细信息,但这应该可以让您继续。

关于python - argparse 帮助消息中互斥的组标题和描述,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45602511/

24 4 0