gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 22:22:39 24 4
gpt4 key购买 nike

我正在使用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com