¿Por qué KeyboardInterrupt no funciona en Python?

¿Por qué código como el siguiente no captura CTRL-C?

MAXVAL = 10000 STEP_INTERVAL = 10 for i in range(1, MAXVAL, STEP_INTERVAL): try: print str(i) except KeyboardInterrupt: break print "done" 

Mi expectativa es: si se presiona CTRL-C mientras se ejecuta el progtwig, se supone que KeyboardInterrupt abandona el ciclo. No es asi.

¿Alguna ayuda en lo que estoy haciendo mal?

Parece que el progtwig se realiza cuando el control-c ha sido alcanzado, pero su sistema operativo no ha terminado de mostrarle toda la salida. .

El flujo de código es el siguiente:

  1. for toma nuevo objeto de la lista (generado por range ) y establece i
  2. try
  3. print
  4. volver a 1

Si presiona CTRL-C en la parte 1, está fuera del try / except , por lo que no detectará la excepción.

Intenta esto en su lugar:

 MaxVal = 10000 StepInterval = 10 try: for i in range(1, MaxVal, StepInterval): print i except KeyboardInterrupt: pass print "done" 

Estaba teniendo el mismo problema y acabo de descubrir cuál era la solución:

Estás ejecutando este código en un IDE como PyCharm. El IDE está tomando ctrl + c (keyboardinterrupt) como copia. Intenta ejecutar tu código en la terminal.

Funciona.

Estoy usando Ubuntu Linux, ¿y tú? Prueba de nuevo usando algo como MaxVal = 10000000

Se sale del bucle y se imprime “listo”.