EOFError se lanza cuando la función incorporada input() llega al final de un archivo o flujo sin leer ningún dato. Esto ocurre comúnmente en scripts que leen de stdin cuando el flujo de entrada está cerrado o redirigido desde una fuente vacía.
Por qué ocurre
- •El usuario presiona Ctrl+D (Unix) o Ctrl+Z (Windows) para enviar EOF durante input().
- •El script lee de stdin pero se ejecuta con una tubería vacía o agotada.
- •Frameworks de pruebas automatizadas que no proporcionan stdin al proceso.
- •Lectura más allá del final de un objeto similar a archivo pasado a input().
Ejemplos
Código que causa el error
# Run this and immediately send EOF (Ctrl+D)
name = input("Enter your name: ")
print(f"Hello, {name}")Error en la terminal
Enter your name: EOFError: EOF when reading a line
Cómo solucionarlo
Envuelve las llamadas a input() en un bloque try/except EOFError para manejar el caso correctamente. Al procesar tuberías, verifica si stdin es una terminal con sys.stdin.isatty() antes de llamar a input(). Proporciona valores predeterminados para contextos no interactivos.
Código corregido
try:
name = input("Enter your name: ")
print(f"Hello, {name}")
except EOFError:
print("No input provided, using default")
name = "Guest"Errores relacionados
¿Listo para practicar tu inglés en el trabajo?
Lingua-e tiene ejercicios interactivos basados en conversaciones reales de developers: standups, code reviews, retrospectivas y más. Practica hasta que salga solo.
Prueba Lingua-e gratis