7

我想开发一个通过控制台/命令行与用户交互的小型 Python 应用程序。有没有什么好的库可以用来获取用户输入并以漂亮的方式显示输出?我尝试搜索,但我发现的大部分内容是命令行参数处理,没有看到关于 shell 中用户交互的任何内容。

它应该是跨平台的(Windows 和 Linux)

4

3 回答 3

10

一个非常优秀的库是cmd,它是 python 标准库的一部分。它是跨平台的 Windows、Linux、Mac。你只需要实现一个类,它就提供了很多很棒的特性:

  1. 提供支持的命令列表(它们最终被实现为方法)
  2. 可以调用来解释您的命令之一的帮助命令
  3. 处理整个输入命令、检查语法和调用您的方法命令循环循环。
  4. 用户可以保存他们在交互式会话中运行的命令并将它们作为脚本运行。看看下面的例子。

如果您以龟壳示例并将其保存为 turtleshell.py 并将以下龟脚本文件保存为 circles.txt

circle 20
circle 50
circle 100
bye

然后您可以使用以下命令运行 turtle 脚本:

cat circles.txt | ./turtleshell.py

因此,在文档中显示的简单示例中,开发人员基本上制作了一种简单的迷你语言,可以用作与海龟模块的更简单接口,从而更容易向孩子们介绍编程。上面的示例取自 python3 文档,因为它们在其文档中包含了 2.7 文档中没有的详细示例,但 cmd 在 python 2.3 及更高版本中可用且功能齐全。

于 2012-10-06T16:33:44.437 回答
6

curses您可以使用library控制 Unix 终端。该库本质上允许您构建一个简单的终端 GUI。

如果你需要更多,也可以看看Urwid。Urwid 为有眼光的终端 GUI 开发人员提供了更复杂的 GUI 小部件。:-)

于 2012-10-06T09:57:50.460 回答
2

根据文档, Curses是 Unix 环境中使用最广泛的。对于 Windows,您可以查看Windows Console DriverWConio -Windows CONsole I/O for Python 或Wcurses。不幸的是,我在跨平台控制台库上找不到太多东西。

如果您的 Windows 用户是 CLI 用户,他们可能拥有支持 ncurse 的cygwin,因此如果您问我,curses 仍然是最佳选择。

于 2012-10-06T09:56:46.207 回答