【问题标题】:argparse action menu with variable options带有变量选项的 argparse 操作菜单
【发布时间】:2023-09-02 23:02:01
【问题描述】:

我正在尝试构建一个程序,将第一个参数作为一个动作(如program listprogram createprogram delete 等),然后在上下文中使用提供的其余选项操作(如-c--all 等)。

如何为我在第一个参数中定义的每个操作多次定义相同的可选参数?

【问题讨论】:

  • 您希望能够在同一次执行中多次给出相同的参数?每次都使用自定义值(不仅仅是计数器)?
  • 你可以使用子解析器。它们被记录在案,并且已经在 SO 上进行了很多讨论。我给出的最新示例是*.com/a/53324772/901925。如果您不喜欢为多个子解析器键入相同的参数,您可以在编辑器中使用 copy-n-paste,或者编写一个实用函数来为您完成。还有一个parents 机制,但通常这似乎导致的问题多于好处。
  • 或者如果其余部分相同,则以positionalchoices 开头。

标签: python menu action argparse


【解决方案1】:

@hpaulj 的评论帮助我解决了这个问题。我使用了子解析器并创建了单独的上下文来存储脚本中每个主要操作的配置。

可以在此处找到示例:https://*.com/a/53324772/901925

【讨论】:

    【解决方案2】:

    你可以这样使用:

    parser = argparse.ArgumentParser()
    parser.add_argument("action", type=str, help="action like create or delete")
    parser.add_argument("-c", action="count", default=0)
    

    在这种情况下,不带 -c 的第一个参数将存储在 action 变量中。

    【讨论】:

      最近更新 更多