我正在开发一个管理脚本,需要通过大量的命令行选项来完成。最初几个版本的脚本使用optparse收集用户输入,然后按照适当的顺序测试每个选项的值,并执行相应的操作。这导致了一堆难以阅读和维护的代码。
我正在寻找更好的解决方案。
我的希望是创建一个系统,在其中可以以更正常的Python方式编写函数,然后在运行脚本时,从我的函数生成选项(和帮助文本),解析并按适当的顺序执行。此外,我真的很想能够构建类似Django风格的子命令接口,其中“myscript.py install”与“myscript.py remove”完全分离(不同的选项、帮助等)。
我找到了simon willison's optfunc,它做了很多这方面的工作,但似乎没有达到预期——我想将每个选项都作为一个函数来编写,而不是试图将整个选项集压缩成一个巨大的选项字符串。
我想象一种涉及主要功能类集合的架构,每个类的定义方法对应于命令行中的特定选项。这种结构的优点是每个选项都与其修改的功能代码紧密相连,易于维护。我不确定如何处理命令的排序,因为类方法的排序是不确定的。
在重新发明轮子之前:是否有其他现有的代码片段表现类似?其他易于修改的东西?提问已经澄清了我自己的想法,但欢迎反馈为什么这是一个糟糕的想法,或者它应该如何工作。
我正在寻找更好的解决方案。
我的希望是创建一个系统,在其中可以以更正常的Python方式编写函数,然后在运行脚本时,从我的函数生成选项(和帮助文本),解析并按适当的顺序执行。此外,我真的很想能够构建类似Django风格的子命令接口,其中“myscript.py install”与“myscript.py remove”完全分离(不同的选项、帮助等)。
我找到了simon willison's optfunc,它做了很多这方面的工作,但似乎没有达到预期——我想将每个选项都作为一个函数来编写,而不是试图将整个选项集压缩成一个巨大的选项字符串。
我想象一种涉及主要功能类集合的架构,每个类的定义方法对应于命令行中的特定选项。这种结构的优点是每个选项都与其修改的功能代码紧密相连,易于维护。我不确定如何处理命令的排序,因为类方法的排序是不确定的。
在重新发明轮子之前:是否有其他现有的代码片段表现类似?其他易于修改的东西?提问已经澄清了我自己的想法,但欢迎反馈为什么这是一个糟糕的想法,或者它应该如何工作。