2015-09-11 48 views
2

我有監視用戶的輸入,看起來像這樣一個主題:如何在Python 3.x中中止用戶的輸入?

def keyboard_monitor(temp): #temp is sys.stdin 
global flag_exit 

while True: 
    keyin = temp.readline().rstrip().lower() 
    if keyin == "exit": 
     flag_exit = True 
     print("Stopping...") 

    if flag_exit == True: 
     break 

如果鍵入退出標誌的設置正確,所有其他線程終止。如果我的另一個線程設置標誌,則此線程拒絕完成,因爲它掛在用戶輸入上。我必須輸入一些東西才能完成。如何更改此代碼,以便在外部設置標誌時程序結束?

+0

開始。 – wim

+0

你可以試試'temp.close()'。不知道可能會有什麼影響。 – meuh

+0

它只需要跨平臺或Unix或Windows? – dawg

回答

0

它很難說究竟是怎麼了?沒有更多的代碼,但作爲一個簡單的解決方案,你可以比較exit()這是建在一個蟒蛇。這應該可靠地終止應用程序,也sys.exit()

從WIM的評論:

可以使用atexit模塊註冊清理具有看看`select`模塊處理

import atexit 

def cleanup(): 
    pass 
    # TODO cleanup 

atexit.register(cleanup) 
+0

當給出一個鏈接的答案時,通常會優先將解決方案的關鍵部分直接複製到答案 – wnnmaw

+0

謝謝,我會記得這樣做 –

+0

我必須做一些房子保持(關閉文件句柄等),所以我不能只是致電退出。 –

相關問題