python中的自定义提示

时间:2009-12-30 21:31:42

标签: python command-line

我有一个脚本,首次运行时会创建一个记录特定事件的新线程。创建线程后,我要求用户输入以下代码:

user_input = raw_input('>> ')

因此,当它运行的脚本用户收到'>>'时提示,但是当创建的线程中的记录器开始记录时,它开始看起来像这样:

>> Error: Some random error  
Error: Another error

你可以看到它搞砸了并且失去了提示。我想做的是显示日志消息,但仍然保持我的光标在提示准备好输入。像:

>>  
Error: Some random error  
Error: Another error
>>

2 个答案:

答案 0 :(得分:2)

问题是你的raw_input()正在一个完全不同的线程上运行,并且不知道记录器只是发出了一些日志消息。因此raw_input()无法知道它应该重新绘制提示。

我没有任何简单的解决方案。我能想到的只是记录器线程不打印消息,而是将它们附加到raw_input()线程可以看到的某个共享列表中,并在用户输入输入后让该线程打印消息。

实际上,我还有另一个想法:您可以在窗口顶部绘制>>提示符,并在窗口中显示记录器消息。如果它们在空间上是分开的,那么它们是否在时间上交错并不重要。

答案 1 :(得分:1)

明显(可能是唯一正确的)解决方案是登录单独的文件,而不是标准输出。 如果您仍希望实时观察日志输出,可以在日志文件中使用tail -f等命令。