繁体   English   中英

获取用户输入而不中断程序执行

[英]Get user input without interrupting program execution

我正在研究一个程序(实际上是一个聊天机器人,你可以在这里查看代码),它始终有无限循环运行。

我使用asyncio作为代码的一部分,所以我最初尝试创建另一个接收输入并检查命令的子例程。 但是,它似乎并没有起作用。

我想要做的是能够发出程序命令而不会像使用input()那样中断执行。 优选地,它将具有>字符和线,其保持在屏幕的底部,其中程序输出出现在其上方并允许​​输入。

这可能与asyncio还是我需要查看多线程我的程序或其他什么?

编辑 :我以为我可能会使用一个ncurses GUI-thing,它在底部有一个输入字段,在输入字段上面有所有bot的输出。 这可能吗?

您应该能够使用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代表位置和命名参数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM