在不中断程序执行的情况下获取用户输入



我正在开发一个程序(实际上是一个聊天机器人,如果你愿意,你可以在这里看到代码),它有一个无限循环一直在运行。

我使用 asyncio 作为代码的一部分,因此我最初尝试创建另一个接收输入并检查命令的子例程。然而,这似乎不起作用。

我想做的是能够发出程序命令而不会像使用 input() 那样中断执行。最好,它将具有一个>字符和行,该字符和行位于屏幕底部,程序输出出现在其上方并允许输入。

这是否可以与asyncio有关,或者我是否需要研究多线程我的程序或其他东西?

编辑:我的一个想法是,也许我可以使用一个ncurses的GUI事物,它在底部有一个输入字段,所有机器人的输出都在输入字段上方。这可能吗?

您应该能够使用 asyncio,因为 StdIn 只是您可以选择的另一个流......

from threading import Thread
import shlex

def endless_job():
    while True:
        pass

job = Thread(target=endless_job)
job.start()
while True:
    user_input = input('> ')
    print(shlex.split(user_input))

shlex模块帮助您解析用户输入的命令行:)

如果需要将参数传递给 endless_job 函数,可以执行以下操作:

job = Thread(target=endless_job, args=(1,'a'), kwargs={'a': 1, 'b': 2})

其中argskwargs分别代表位置参数和命名参数。

相关内容

  • 没有找到相关文章

最新更新