Ввод с клавиатуры с таймаутом в Python - PullRequest
39 голосов
/ 26 августа 2009

Как бы вы попросили пользователя ввести какой-либо ввод данных, но по истечении N секунд?

Google указывает на почтовую ветку об этом на http://mail.python.org/pipermail/python-list/2006-January/533215.html, но, похоже, она не работает. Оператор, в котором происходит таймаут, независимо от того, является ли это sys.input.readline или timer.sleep (), я всегда получаю:

: входные данные [raw_] ожидаются не более 1 аргумента, получено 2

, который каким-то образом исключение не может поймать.

Ответы [ 11 ]

0 голосов
/ 14 марта 2012

Поздний ответ:)

Я бы сделал что-то вроде этого:

from time import sleep

print('Please provide input in 20 seconds! (Hit Ctrl-C to start)')
try:
    for i in range(0,20):
        sleep(1) # could use a backward counter to be preeety :)
    print('No input is given.')
except KeyboardInterrupt:
    raw_input('Input x:')
    print('You, you! You know something.')

Я знаю, что это не то же самое, но многие реальные проблемы могут быть решены таким образом. (Обычно мне требуется тайм-аут для ввода пользователя, когда я хочу, чтобы что-то продолжалось, если в данный момент пользователя там нет.)

Надеюсь, это хотя бы частично поможет. (Если кто-нибудь все равно его читает :))

...