0

我在Windows上运行的Python 3中制作了一个基本实用程序,用户使用它输入命令,并且在任何给定时间都可能收到打印的消息。问题是,在使用该功能时,如果用户正在输入命令并且中途将某些内容打印到控制台中,结果可能如下所示:input()

this-is-a-command[INFO]User Connected.-that-is-being-cut-off

在这种情况下,input()仍然会返回命令this-is-a-command-that-is-being-cut-off,但这对用户来说看起来不是很吸引人,并且可能会引起混淆。我尝试过使用各种工具,例如sys.stdin只有相同的结果。如果有人知道这个问题的解决方案,希望不使用 3rd 方模块,那就太好了。

4

1 回答 1

1

您可以使用单个线程进行输入和输出。让接收消息的线程将它们放入队列双端队列

然后,当您不等待用户输入时,您可以检查队列中的消息并输出它们。为了不阻塞地检查用户输入,标准库中有msvcrt 模块

或者你使用诅咒http://pdcurses.sourceforge.net/ ,直到 3.2 ( http://www.lfd.uci.edu/~gohlke/pythonlibs/#curses )之前都有非官方的 python 构建并构建一个更高级的上面的界面。

话虽如此,我不会选择 Windows 命令行来构建类似的东西。

于 2013-05-10T20:48:28.710 回答