【问题标题】:Python and arbitrary command line optionsPython 和任意命令行选项
【发布时间】:2011-10-29 19:44:27
【问题描述】:

我正在编写一个基于命令行插件的程序,其中插件将在我提供的任何内容之上提供额外的功能。

例如,假设我编写了一个简单的脚本来解析图像并存储它们,这就是我所做的一切。然后其他人可以编写一组脚本来操作图像,将他的脚本放入插件中。

插件将被加载,用户可以通过在命令行中指定插件名称来访问插件。

脚本想要为用户提供额外选项的情况并不少见。 所以假设在某些年里,已经编写了 20 个不同的插件。

现在,所有作者都希望允许用户提供选项,因此主引擎应该获取用户的选项并将它们传递给插件,以便它可以随心所欲地处理它们。

为了保持统一,他们可能会同意某些选项应该执行类似的操作。像“-o name”应该将输出名称设置为“name”。然后他们会去实现自己的选项和东西,主引擎不知道(当然,它不应该知道插件做什么)

我正在使用已弃用的 getopt 模块,每当我指定未定义的选项时,它都会抛出异常。我听说过 optparse 和 argparse,但我不确定它们是否允许用户指定他想要的任何选项,而代码不会引发异常。

我怎样才能指定任何命令行选项?

【问题讨论】:

    标签: python windows command-line-arguments


    【解决方案1】:

    argparse 允许您使用 parse_known_args 方法部分解析参数列表,返回正确解析的内容以及剩余参数的列表。

    【讨论】:

    • 我刚刚查找了 argparse 的文档并看到了这一点,它甚至说“有时一个脚本可能只解析一些命令行参数,将剩余的参数传递给另一个脚本或程序。”大声笑
    【解决方案2】:

    您想要的解决方案可能是将命令行参数视为一种进程中的管道。哪些选项也是选项可能去向的一部分。

     command <global options> sub_command <sub_options> new_sub_command <new_sub_options>
    

    每个命令都会将选项从sys.argv 移开,直到它找到一个它不理解的选项,或者一个不能成为有效选项的选项,然后它停止解析参数,完成它的工作,并将控制权返回给插件-调度员。

    【讨论】:

      猜你喜欢
      • 2021-01-27
      • 1970-01-01
      • 2017-06-14
      • 1970-01-01
      • 2021-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多