2015-07-20 147 views
2

我使用套接字編寫了一個小小的IRC客戶端。不,我不想用扭曲的庫文件。 ;)我打印的消息標準輸出,這一切都很好。有沒有一種很好的方式來打印新的消息,但也聽取用戶輸入像線程? 這裏是一個小片段:Python:同時使用標準輸入和標準輸出

from threading import Thread 
import time 

def print_stuff(): 
    while True: 
     print "New PRIVMSG!" 
     time.sleep(2) 

t = Thread(target=print_stuff) 
t.start() 

while True: 
    raw_input(">>") 

這不產生想象中的那麼我需要的輸出... 輸出看起來是這樣的:

>>New PRIVMSG! 
test test tesNew PRIVMSG! 

有沒有一種方法,使在CMD這項工作或bash?

預先感謝您!

編輯: 輸出應該是這樣的。

New PRIVMSG! 
New PRIVMSG! 
>> hello test 
New PRIVMSG! 
+0

你想要輸出什麼? –

+0

您可能想要查看操縱終端中的光標。通過這種方式,您可以通過將輸入保留在一個地方並將傳入的消息保留在另一個地方來模擬GUI。查看https://pypi.python.org/pypi/blessings或https://docs.python.org/2/library/curses.html –

+0

nivix zixer。這看起來可以幫助我!我會看看。謝謝! – roOt

回答

2

您可以創建控制檯鎖。在線程中有多個方便的Lock對象;我想創建一個如:

consoleLock = threading.Lock() 

那麼每當你想打印到控制檯:

consoleLock.acquire() 
print 'what to print' 
consoleLock.release() 

這將使打印到控制檯線程安全的。至於在同一時間傾聽用戶的意見,你到底想做什麼呢?輸入過程中打印的任何東西仍然會在輸入區域中間結束,因爲只有一個控制檯可以打印到(並將讀取輸入打印到控制檯)。

相關問題