python - python - 可以在不发送输入的情况下读取标准输入内容
问题描述
(我的标题可能有点模棱两可,大家可以随意修正)
我正在使用套接字做一个聊天应用程序,现在它在终端上运行,我正在对 user1 向 user2 发送消息时进行一些处理,它看起来不错,但仍然存在一个问题:当 user1 输入消息时,并且 user2 在 user1 发送之前发送一个,user1 的消息从标准输出中消失,但仍保留在标准输入上(因为我只在其他用户消息到达时编辑标准输出)。
视觉参考:
当 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'
从光标位置擦除行直到结尾。
我现在想要的是从user1
stdin 获取未发送的内容并将其与 display 一起打印user1>
,因为按 enter 将发送消息,但看到消息从 stdout 消失时很奇怪。
解决方案
推荐阅读
- vb.net - VB从文本导入值
- java - 如何在 OnClickListener 中切换选项卡位置或替换选项卡位置
- c++ - 如果我们将浮点数据的小数部分分配给 int,会发生什么情况?
- testing - Caffe 总是返回一个标签
- php - 注意:尝试在第 277 行的 /wp-content/themes/my-theme/header.php 中获取非对象的属性
- php - 使用 Zend i18n 和 Gettext 适配器时是否可以获得所有已加载的语言环境?
- assembly - 我对这个装配循环的理解是否正确?
- apache-flink - Flink 连接被拒绝:localhost/127.0.0.1:8081
- python - Django:查找以相同单词开头的参数数量
- javascript - 在没有本地存储的情况下存储数据或只执行一次操作(刷新)