2012-08-30 128 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