Sería de gran ayuda para saber qué sistema operativo se está utilizando, ya que esta es una pregunta muy por el sistema operativo específico. Por ejemplo, la respuesta de Kylar no funciona en Windows porque sys.stdin no tiene un atributo fileno.
tenía curiosidad, y la arrojó en conjunto una solución utilizando maldiciones, pero esto no va a funcionar en Windows, ya sea:
#!/usr/bin/python
import time
import sys
import curses
def alarmloop(stdscr):
stdscr.addstr("How many seconds (alarm1)? ")
curses.echo()
alarm1 = int(stdscr.getstr())
while (1):
time.sleep(alarm1)
curses.flushinp()
stdscr.clear()
stdscr.addstr("Alarm1\n")
stdscr.addstr("Continue (Y/N)?[Y]:")
doit = stdscr.getch()
stdscr.addstr("\n")
stdscr.addstr("Input "+chr(doit)+"\n")
stdscr.refresh()
if doit == ord('N') or doit == ord('n'):
stdscr.addstr("Exiting.....\n")
break
curses.wrapper(alarmloop)
EDIT: Ah, Windows. Entonces puedes usar el módulo msvcrt. Tenga en cuenta que el código de abajo no es perfecto, y no funciona en reposo en el:
#!/usr/bin/python
import time
import subprocess
import sys
import msvcrt
alarm1 = int(raw_input("How many seconds (alarm1)? "))
while (1):
time.sleep(alarm1)
print "Alarm1"
sys.stdout.flush()
# Try to flush the buffer
while msvcrt.kbhit():
msvcrt.getch()
print "Continue (Y/N)?[Y]"
doit = msvcrt.getch()
print "Input",doit
if doit == 'N' or doit=='n':
print "Exiting....."
break
no necesita ese punto y coma después de 'sys.stdout.flush();' –
Malo, tiene razón, no necesito el punto y coma. Solucionado el código. – Amjith
"¿vaciar o descartar todas las teclas"? ¿Quiere decir "Leer e Ignorar"? No puede "enjuagar" fácilmente la entrada. ¿Por qué no hacer lo simple y obvio: leerlos e ignorarlos? –