Python和任意命令行选项

Python和任意命令行选项,python,windows,command-line-arguments,Python,Windows,Command Line Arguments,我正在编写一个基于命令行插件的程序,在这个程序中,插件将在我提供的任何功能之上提供额外的功能 例如,假设我编写了一个简单的脚本,解析图像并存储它们,我所做的就是这样。然后其他人可以编写一组脚本来操作图像,将他的脚本放入插件中 插件将被加载,用户可以通过在命令行中指定插件名称来访问插件 脚本希望为用户提供附加选项的情况并不少见。 因此,假设在几年内,已经编写了20个不同的插件 现在,所有的作者都希望允许用户提供选项,因此主引擎应该接受用户的选项并将其传递给插件,以便它可以按照自己的意愿处理这些选项

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

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

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

脚本希望为用户提供附加选项的情况并不少见。 因此,假设在几年内,已经编写了20个不同的插件

现在,所有的作者都希望允许用户提供选项,因此主引擎应该接受用户的选项并将其传递给插件,以便它可以按照自己的意愿处理这些选项

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

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


如何使其能够指定任何命令行选项?

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

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

 command <global options> sub_command <sub_options> new_sub_command <new_sub_options>
命令子命令新子命令

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

我只是查找了argparse的文档,看到了这一点,它甚至说“有时一个脚本可能只解析几个命令行参数,将其余的参数传递给另一个脚本或程序。”lol