最近我在用python写CLI一个服务器程序,我的程序异步运行,我遇到了以下问题:
我马上说网上有这样的问题,只是英文的。堆栈溢出,但它不再相关(它已有 14 年历史),并且该方法不再有效
我的控制台同时接收来自服务器的消息,同时我想实现异步命令输入,在网上找到了下面这个所谓的“row_input()”的例子(如果我混合了一些东西,我很抱歉;向上):
import asyncio
import sys
import websockets
async def ainput(string: str) -> str:
await asyncio.to_thread(sys.stdout.write, f'{string} ')
return (await asyncio.to_thread(sys.stdin.readline)).rstrip('\n')
该功能允许您异步输入игнорируя带有传入信息的文本,但是,当接收信息时,未完成的文本сбрасывается,来自服务器的消息补充了该行,并且каретка переводится на следующую строку,我需要输入之前的文本,例如“输入命令:”保留在底部,接收信息时也会保存输入字段。理论上,当收到新消息时,控制台应该读取未完成的输入,删除该行,写入消息,然后再次开始输入,但使用未完成的文本。还可以用于额外的信息,我工作的目的Windows 10