2015-02-10 77 views
1

我正在處理的程序需要暫停並詢問用戶輸入,如果沒有,請繼續使用該程序。我認爲它看起來像這樣:請求用戶輸入python中的有限時間

import time 

...[code to run before break]... 

if input in time.sleep(5): 
    [break out of normal code] 
else: 
    [return to normal code] 

[code to run after break]... 

有什麼想法?

編輯:沒有想到這個,當我問,但我運行Windows(8.1)。

+0

谷歌是你的朋友編碼... http://stackoverflow.com/questions/1335507/keyboard-input-with-timeout-in-python [1]:HTTP:// stackoverflow.com/questions/1335507/keyboard-input-with-timeout-in-python – FlyingGuy 2015-02-10 04:10:33

+0

沒有想到使用單詞「超時」。這就解釋了爲什麼我無法在google上獲得結果。 – unknown 2015-02-10 04:20:52

回答

0

一個快速和骯髒的黑客,但有效的位。以下內容等待用戶輸入5秒或直到收到輸入,以先發生者爲準。

from datetime import datetime, timedelta 
import os 
import signal 
import threading 
import time 

waiting = False 

def wait_and_kill(timeout): 
    elapsed = timedelta(0) 
    while elapsed.total_seconds() < timeout and waiting: 
     start = datetime.now() 
     time.sleep(0.1) 
     elapsed += datetime.now() - start 
    if waiting: 
     os.kill(os.getpid(), signal.SIGINT) 

try: 
    t = threading.Thread(target=wait_and_kill, args=(5,)) 
    waiting = True 
    t.start() 
    raw = raw_input('> ') 
    waiting = False 
except KeyboardInterrupt: 
    pass