0

所以我正在开发一个基于控制台的python(实际上是python3)程序,我用来input(">")从用户那里获取命令。

现在我想在我的程序中实现“最后一个命令”功能——当用户按下键盘上的向上箭头时,他们可以看到他们的最后一个命令。

经过一番研究,我发现我可以使用 curses lib 来实现这一点,但有两个问题。

  1. 诅咒在 Windows 上不可用。
  2. 我的程序的其他部分用于print()输出。我不想用诅咒重写它们。

那么还有其他方法可以实现“最后一个命令”功能吗?谢谢。

4

2 回答 2

1

在新版本的 python 中,存在用于处理用户输入的不错的 modile readline ,以及用于自动完成目的的rlcompleter。但我认为在 Windows 上无论如何都需要安装 readline lib。

于 2013-01-18T12:33:08.477 回答
1

您可以做的是应用某种 shell 历史功能:用户发出的每个命令都将放在一个列表中,然后您将实现一个特殊调用(控制台的命令),让我们说“历史”将在用户填写时按顺序为用户打印列表,每个命令旁边的数字都会增加。然后,另一个调用(再次是控制台的特殊命令),让我们说“!!” (但实际上可能是任何东西,例如“重复”),并且您要重复的一些命令将从列表中获取命令并在不重新输入的情况下执行它:输入 '!! 34' 将再次执行命令号 34,它可以是 'something -a very -b long -c with -d very -e large -f number -g of -h arguments -666'。

我知道它与您想要的不完全相同,但它很容易快速实现,并提供您所追求的命令重复功能,并且应该是不错的替代品,直到您弄清楚如何按照您想要的方式进行操作;)

于 2013-01-18T12:46:18.657 回答