Python和任意命令行选项

3
我正在编写一个基于插件的命令行程序,插件将提供额外的功能。例如,我编写了一个简单的脚本来解析图像并存储它们,然后其他人可以编写一组脚本来操作这些图像,并将这些脚本放在插件中。
用户可以通过在命令行中指定插件名称来加载插件。
脚本通常希望为用户提供附加选项。假设有20个不同的插件已经编写好了,所有作者都希望允许用户提供选项,因此主引擎应该将用户的选项传递给插件,使其能够按照自己的方式处理它们。
为了保持统一,他们可能会同意某些选项执行类似的操作。例如,“-o name”应将输出名称设置为“name”。然后他们会开始实现自己的选项和功能,而主引擎不知道这些(当然,它不应该知道插件的具体操作)。
我正在使用已弃用的getopt模块,但是如果我指定未定义的选项,它会抛出异常。我听说过optparse和argparse,但我不确定是否可以让用户指定任何选项而不会导致代码抛出异常。
如何才能让我指定任何命令行选项?
2个回答

6

argparse让你用parse_known_args方法部分解析一个参数列表,返回已正确解析的内容和剩余参数列表。


我刚刚查看了argparse的文档,发现它甚至说道:“有时候,一个脚本只需要解析几个命令行参数,然后将其余的参数传递给另一个脚本或程序。”哈哈 - MxLDevs

1
你想要的解决方案可能是将命令行参数视为一种进程内管道。选项也是选项可能放置的一部分。
 command <global options> sub_command <sub_options> new_sub_command <new_sub_options>

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接