首页 > 解决方案 > python - 可以在不发送输入的情况下读取标准输入内容

问题描述

(我的标题可能有点模棱两可,大家可以随意修正)

我正在使用套接字做一个聊天应用程序,现在它在终端上运行,我正在对 user1 向 user2 发送消息时进行一些处理,它看起来不错,但仍然存在一个问题:当 user1 输入消息时,并且 user2 在 user1 发送之前发送一个,user1 的消息从标准输出中消失,但仍保留在标准输入上(因为我只在其他用户消息到达时编辑标准输出)。

视觉参考:

在 user2 发送它的消息之前

当 user2 的消息到达时,带有的user1> 行将被替换为 user2 的消息,并在下面重写。

正如你在这里看到的

我的代码如下:

def listen_messages(client, display):
    while True:
        msg = client.recv(4096).decode("utf-8")
        sys.stdout.write('\x1b[0G')
        sys.stdout.write('\x1b[0K')
        print(msg)
        print(display, end="", flush=True)

代码解释了自己,但 ANSI 转义代码是:'\x1b[0G'将光标带到行首,并'\x1b[0K'从光标位置擦除行直到结尾。

我现在想要的是从user1stdin 获取未发送的内容并将其与 display 一起打印user1> ,因为按 enter 将发送消息,但看到消息从 stdout 消失时很奇怪。

标签: pythoncommand-line-interfacestdin

解决方案


推荐阅读