如何显示参数子组中参数的argparse帮助信息?

2024-05-29 02:50:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在组装一个argparse解析器,其中我希望有多个级别的子分组:

Parser
|
|- Option A
|- Option B
|- Group 1
|  |- Option 1.A
|  |- Subgroup 1.2
|     |- Mutually-Exclusive Group 1.2.1
|     |  |- MEG Option 1.2.1.A
|     |  |- MEG Option 1.2.1.B
|     |- Mutually-Exclusive Group 1.2.2
|     | ...
|- Group 2
| ...

目前我已将其编码如下:

^{pr2}$

当我用--help调用脚本时,我得到以下结果:

usage: h5cube.py [-h] [-d] [-c #] [-t #] [-a | -s] [-p #] path

Gaussian CUBE (de)compression via h5py

positional arguments:
  path                 path to .(h5)cube file to be (de)compressed

optional arguments:
  -h, --help           show this help message and exit
  -d, --delete         delete the source file after (de)compression

compression options:
  -c #, --compress #   gzip compression level for volumetric data (0-9,
                       default 9)
  -t #, --truncate #   gzip truncation width for volumetric data (1-15,
                       default 5)

decompression options:
  -p #, --precision #  volumetric data block output precision (0-15, default
                       5)

所有'group level'参数的帮助内容显示得很好。但是,我的子组参数-a-s的帮助丢失。选项正在被解析,因为它在签名中显示[-a | -s],但它们的帮助没有显示。在

-a和{}从其互斥组重新定位到gp_thresh没有帮助。唯一的区别是-a和{}分别出现在签名中:

usage: h5cube.py [-h] [-d] [-c #] [-t #] [-a] [-s] [-p #] path

如何显示-a-s的帮助内容?我查看了^{} help的全部内容,但没有找到任何类似“显示深度”设置或其他设置的内容。设置子解析器行吗?不过,这似乎有点过分了。。。。在

这是64位Windows7上的Python3.5.1。此状态下的代码是我的GitHub repo中的here。在


Tags: pathdefault解析器内容datagrouphelpusage
1条回答
网友
1楼 · 发布于 2024-05-29 02:50:26

我们已经在其他SO问题中讨论过这个问题,但简单的答案是argument groups不嵌套。mutually exclusive groups可以在参数组中嵌套以便于显示,但它们不嵌套用于解析或测试

参数组只影响帮助显示。添加到组中的操作也会添加到解析器中。解析器只查看自己的操作列表,而忽略任何分组。并且帮助显示不允许任何嵌套缩进。在

=================

add_argument_group是抽象父类_ActionsContainer中的一个方法,类似add_argument的方法也是。_ArgumentGroup和{}都是这个类的子类,所以继承这个方法。因此,可以将组添加到组中(不会引发错误)。由于add_argument的工作原理,参数(Actions)与解析器和所有组共享(它们都访问同一个列表)。所以对嵌套动作的解析工作得很好。在

格式化程序中的缺陷就是帮助。它从解析器获取参数组的列表。这些组包括默认的2个(可选和过目)。但是格式化程序中没有规定检查组是否包含子组。在

最初的开发人员没有预料到对嵌套组的兴趣。因此,该类中的层次结构没有被阻止,也没有在该类中进行不完整的嵌套。修补工作进展缓慢。在

相关问题 更多 >

    热门问题