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