我将在python中编写一个相当复杂的命令行应用程序.我想利用除纯Python之外的其他东西,可能是一个框架或其他东西,使应用程序中的服务和代码管理更容易.我想在我看来,我在考虑MVC,因为应用程序将有几个不同的命令(控制器),它们调用不同的数据源(JSON请求,REST请求等,例如MVC中的"模型"),然后以不同的格式显示结果(视图).
我认为MVC适用于此,但我并没有真正做一个Web应用程序.我想要的东西不一定需要Web服务器,但具有强制一些编码标准的框架的优点.
有没有人有任何提示或建议?我知道我可以用Python从零开始构建一些东西,但我只是好奇是否有其他我可以利用的东西.
谢谢,达斯汀
小智 20
这有点晚了,不过其他人偶然发现了这个:
Cement是Python的高级CLI应用程序框架.入门非常简单,从登录到配置文件解析几乎可以自定义几乎所有部分.Cement2(代号为portland)目前处于测试阶段,但非常接近稳定版本:
http://cement.readthedocs.org/en/portland/
此外,如果要创建REST命令行客户端,还要检出dRest:
http://drest.readthedocs.org/en/latest/
它也非常容易上手,并且从请求处理程序到发送端和接收端的序列化方式也非常灵活.
我很乐意回答任何问题.
公平地说,MVC 并不局限于 Web 应用程序。我认为,由于过去几年的 Web 感知趋势,MVC 和 Web 应用程序之间的关系可能会增长。换句话说,Web 应用程序可以使用 MVC,但使用 MVC 并不一定意味着您拥有一个 Web 应用程序。
如果您想使用框架,您可以尝试使用最接近您想要的控制器的框架。我不知道 MVC 框架有命令行作为界面,但一些使用它的独立于平台的 GUI 框架例如GTK+或QT:两者都有 python 绑定。
从个人角度来看,我之前曾使用Django来实现此目的。尽管技术纯度可能是一个讨论点,但在选择框架时,没有人强迫您使用该框架的所有组件。Django 有一个很好的 ORM,我非常喜欢它,因此我将它作为 SSH 操作界面的后端。这可能有点矫枉过正,但对我来说有一个好处,那就是我可以重用我关于系统的知识,而不是学习一个新的、一次性的框架。
总之,这一切都归结为纪律。即使是最好的框架也无法阻止你违反编码标准和偷工减料......
PS 如果您使用的是 Linux,您可能会考虑在命令行前端使用 python 的curses模块。