我有一个脚本,首次运行时会创建一个记录特定事件的新线程。创建线程后,我要求用户输入以下代码:
user_input = raw_input('>> ')
因此,当它运行的脚本用户收到'>>'时提示,但是当创建的线程中的记录器开始记录时,它开始看起来像这样:
>> Error: Some random error
Error: Another error
你可以看到它搞砸了并且失去了提示。我想做的是显示日志消息,但仍然保持我的光标在提示准备好输入。像:
>>
Error: Some random error
Error: Another error
>>
答案 0 :(得分:2)
问题是你的raw_input()
正在一个完全不同的线程上运行,并且不知道记录器只是发出了一些日志消息。因此raw_input()
无法知道它应该重新绘制提示。
我没有任何简单的解决方案。我能想到的只是记录器线程不打印消息,而是将它们附加到raw_input()
线程可以看到的某个共享列表中,并在用户输入输入后让该线程打印消息。
实际上,我还有另一个想法:您可以在窗口顶部绘制>>
提示符,并在窗口中显示记录器消息。如果它们在空间上是分开的,那么它们是否在时间上交错并不重要。
答案 1 :(得分:1)
明显(可能是唯一正确的)解决方案是登录单独的文件,而不是标准输出。
如果您仍希望实时观察日志输出,可以在日志文件中使用tail -f
等命令。