python - 使用 argparse 隐藏选定的子命令

标签 python argparse

我正在使用 argparse 并为我的程序设置了子命令。我已经创建了子解析器来定义这些子命令。我有一些不应在帮助屏幕中向用户显示的管理命令。我知道我们可以隐藏子命令的参数,但我不知道我们如何才能隐藏一些子命令,使其不出现在帮助列表中。

这是我的代码片段,

parser = argparse.ArgumentParser(prog='myProg',
                                    description=desc,
                                   formatter_class=argparse.RawDescriptionHelpFormatter)

subparsers = parser.add_subparsers(dest='sub_parser_name')


myProg_query.add_subparser(subparsers)
myProg_update.add_subparser(subparsers)
myProg_configure.add_subparser(subparsers)
myProg_result.add_subparser(subparsers)

当我运行帮助命令时,我得到了这个

%> myProg --help
usage: myProg [-h] 

positional arguments:
{query,update,configure,result}
query               query information
update              Update 
configure           Configure system
result              tabulate the result

在帮助输出中,我只想向用户显示“查询”和“结果”。我尝试在 add_subparser 方法中使用 argparse.SUPPRESS,但它会隐藏所有子命令。无论我搜索什么,都只谈到隐藏每个子命令的各个参数,而不是关于隐藏子命令。我可能必须创建自定义格式化程序方法,但想检查是否有任何其他方法可以实现此目的。

最佳答案

看起来我找到了这个问题的解决方案,没有任何 argparse 补丁。 修改'metavar'并且不为特定子解析器设置'help'就足够了。

import argparse

parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers(title='commands', metavar='{command}')

command = subparsers.add_parser("command",
                                help='command help.',
                                description='command description.')
suppress_command = subparsers.add_parser("suppress_command",
                                         help=argparse.SUPPRESS,
                                         description='suppress command.')
hidden_command = subparsers.add_parser("hidden_command",
                                       description='Hidden command.')

这导致

[root@localhost ~]# parser -h
usage: parser [-h] {command} ...

optional arguments:
-h, --help        print help message and exit

commands:
{command}
    command           command help.
    suppress_command  ==SUPPRESS==

[root@localhost ~]# parser hidden_command -h
usage: parser hidden_command [-h]

Hidden command.

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

关于python - 使用 argparse 隐藏选定的子命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21692395/

相关文章:

python - MultiIndex 上列级别上的 Pandas GroupBy 和 max

python - WxPython、弹出菜单、回调和 Windows XP

python - 将 IP 列表解析为 python 中的 argparse 作为字符串

Python:如何使用argparse在子解析器中具有互斥组?

python - 如何解决 "unrecognized argument"错误?

python - 从 PatchCollection 添加 matplotlib 颜色条

python - Matplotlib 绘图未显示在 Mac OSX 中?

python - DBRefs 可以包含额外的字段吗?

python - python argparse 的 common-lisp 类似物是什么?

python - 提取函数中命令行参数的名称