命令行Python应用及框架

7 投票
2 回答
7191 浏览
提问于 2025-04-17 04:10

我打算用Python写一个比较复杂的命令行应用程序。我希望能用一些除了纯Python以外的东西,可能是一个框架之类的,这样可以让应用里的服务和代码管理变得更简单。我脑海中想的就是MVC模式,因为这个应用会有几个不同的命令(控制器),它们会调用不同的数据源(比如JSON请求、REST请求等,也就是MVC中的“模型”),然后以不同的格式显示结果(视图)。

我觉得MVC模式很适合这个,但我并不是在做一个网页应用。我想要的是一种不一定需要网络服务器的东西,但又能有框架的好处,强制一些编码标准。

有没有人有什么建议或者小窍门?我知道我可以用Python从头开始构建,但我只是想知道有没有其他可以利用的东西。

谢谢,
Dustin

2 个回答

0

公平地说,MVC(模型-视图-控制器)并不只限于网页应用。近几年,随着网络技术的流行,MVC和网页应用之间的关系可能变得更加紧密。换句话说,网页应用可以使用MVC,但使用MVC并不一定意味着你就有一个网页应用。

如果你想使用一个框架,可以尝试找一个最接近你想要的控制器的框架。我不知道有没有以命令行作为界面的MVC框架,但有一些平台无关的图形用户界面框架,比如GTK+QT,这两个框架都有Python的绑定。

从个人的角度来看,我之前使用过Django来实现这个目的。虽然技术的纯粹性可能会引起讨论,但在选择框架时,没有人强迫你使用框架的所有组件。Django有一个很不错的ORM(对象关系映射),我非常喜欢,以至于我把它用作一个通过SSH操作的界面的后台。虽然这可能有点过于复杂,但对我来说,这样做的好处是我可以重复利用我对系统的了解,而不是去学习一个新的、只用一次的框架。

总之,这一切归根结底还是要看你的自律。即使是最好的框架,也无法阻止你违反编码标准和偷工减料……

另外,如果你使用的是Linux,可以考虑使用Python的curses模块来做你的命令行前端。

20

虽然有点晚了,但我还是想分享给可能看到这个的朋友:

Cement是一个为Python设计的高级命令行应用框架。上手非常简单,而且它在很多方面都很灵活,比如日志记录和配置文件解析等几乎每个部分都可以自定义。Cement2(代号波特兰)现在还在测试阶段,但离稳定版本已经很近了:

http://cement.readthedocs.org/en/portland/

另外,如果你在创建一个REST命令行客户端,也可以看看dRest:

http://drest.readthedocs.org/en/latest/

这个也很容易上手,并且在从请求处理到发送和接收数据的序列化方面都非常灵活。

如果你对这两个框架有任何问题,我很乐意回答。

撰写回答