【问题标题】:How to change parser titles when using Argparse without modifying internal variables?使用 Argparse 时如何更改解析器标题而不修改内部变量?
【发布时间】:2022-01-17 18:09:37
【问题描述】:

我正在使用 Python 的 argparse 模块为我的应用程序创建 CLI。我已经创建了一个subparsers 变量来存储每个命令的解析器,但是当我找不到在不修改parser 的情况下更改subparsers 的标题时(主要的ArgumentParser ) 内部变量。

原码

parser = ArgumentParser(prog="pacstall", formatter_class=CustomHelpFormatter)
subparsers = parser.add_subparsers(dest="command")

parser._subparsers.title = "commands"  # type: ignore[union-attr]
parser._optionals.title = "options"

结果

编辑代码

parser = ArgumentParser(prog="pacstall", formatter_class=CustomHelpFormatter)
subparsers = parser.add_subparsers(title="commands", dest="command")
parser._optionals.title = "options"

结果

如您所见,如果我进行更改,optionscommands 的顺序会切换。另外我不知道如何在不修改parser._optionals.title的情况下将_optionalstitle修改为"options"

这是我的full parser file

【问题讨论】:

    标签: python parsing command-line argparse


    【解决方案1】:

    parser 有 2 个初始参数组,标题为“位置参数”和“可选参数”。一直在讨论改变这些,或者给用户更多的控制权。但正如你所发现的,你可以直接更改它们。

    如果你修改parser._options,我不会告诉任何人:)

    您还可以创建自己的argument_group - 已记录在案。您仍然会在原始版本中获得默认的 --help(除非您禁用它)。

    subparsers 默认情况下将该参数放在“位置”中。如果您指定一个“标题”,它会创建一个新组。

    组按它们创建的顺序显示,或者更确切地说是它们在parser._action_groups 列表中出现的顺序。看看parser.format_help 看看是怎么做到的。

    【讨论】:

    • > 已经讨论过要改变那些你能链接到那个讨论吗?
    猜你喜欢
    • 2016-12-19
    • 1970-01-01
    • 1970-01-01
    • 2019-04-16
    • 2023-02-04
    • 2018-03-27
    • 2023-04-09
    • 2013-09-01
    相关资源
    最近更新 更多