如何在提供输入的同时输出到控制台?

2024-04-24 13:44:24 发布

您现在位置:Python中文网/ 问答频道 /正文

本质上,我想要这个线程中的内容:Output to console while preserving user input in ruby,但是在Python中。我在google上搜索了很长一段时间,找到了一个几乎可以正常工作的解决方案,只是它阻塞了主线程,只要我没有输入任何内容并按enter键。你知道吗

我不想发生的事情的一些结果如下:

/raw:jtv!jtv@jtv.tmi.twitch.tv PRIVMSG #cobaltstreak :USERCOLOR ullr_son_of_sif #DAA520

我想要的示例输入是:

:jtv!jtv@jtv.tmi.twitch.tv PRIVMSG #cobaltstreak :USERCOLOR ullr_son_of_sif #DAA520
/raw
PRIV:jtv!jtv@jtv.tmi.twitch.tv PRIVMSG #cobaltstreak :SPECIALUSER nightbot subscriber
MSG #cobaltstreak :This shouldn't be here, but on the same line with /raw

这意味着,我希望控制台的底线保留输入,同时输出主线程中发生的所有事情,而不影响输入。你知道吗

我现在的代码是:

def console(q, m, lock):
    while 1:
    raw_input()   # After pressing Enter you'll be in "input mode"
    with lock:
        i = raw_input('> ')
        cmd = i.split(' ')[0]
        msg = i.strip(cmd + ' ')
    q.put(cmd)
    m.put(msg)
    if cmd == 'quit':
        break

还有:

cmd = cmd_queue.get()
msg = msg_queue.get()
action = cmd_actions.get(cmd)
if action is not None:
    action(stdout_lock, msg)

注意,上面的代码是while循环的前几行。你知道吗

我在Windows上使用python2.7.6


Tags: cmdlock内容inputgetrawactionmsg