2012-08-30 149 views
0

我正在python中制作一个IRC bot, 现在我想要一些控制台命令。while循环中的Python输入

主要功能是在while循环中,所以我不能把input_raw()。有谁知道如何在不中断循环的情况下获得用户输入。

谢谢!

+3

使用线程。一个用于IRC处理,一个用于输入。 – orlp

+0

非常感谢! – MichaelvdNet

+0

我做了2个线程,1与IRC基地和一个= raw_input只是为了测试...但我不能做任何输入 – MichaelvdNet

回答

0

您可以尝试使用非阻塞套接字select。喜欢的东西:

from sys import stdin 
from select import select 

while True: 
    print "Enter command> ", 
    # Add on_write sockets as necessary 
    on_read, _, _ = select([stdin], [], [], 5) 
    if on_read: 
     command = stdin.readline() 
     print "Now I can process you command..." 
    else: 
     print "No command, we can do here something else..." 
+0

这只会在IRC bot函数是可以在每个循环中“泵出”的东西。如果它的服务进入它自己的阻塞循环,那么线程仍然是需要的。 – jdi

+0

@jdi如果IRC的bot函数是一些重要的计算或类似的东西(利用太多的CPU),线程不会有太大的帮助。但通常,IRC bot应该执行读/写操作。 –

+0

是的,我没有真正指出OP **应该**使用线程结束进程。我只是谈到OP可能需要将“irc bot”功能完全重组为可以处理待处理操作并退出的事情,以便它可以按照您的建议工作。 – jdi