Lingua-e
Python

¿Qué significa BrokenPipeError?

← Errores

BrokenPipeError se lanza cuando un proceso intenta escribir en una tubería cuyo extremo de lectura ha sido cerrado. Ocurre comúnmente en tuberías Unix cuando un comando descendente (como head o grep) termina y cierra su stdin antes de que el proceso ascendente haya terminado de escribir.

Por qué ocurre

  • Redirigir la salida a un comando que termina anticipadamente (ej. head -1 o less).
  • Se escribe en un socket de red después de que el extremo remoto haya cerrado la conexión.
  • Un subproceso que lee de una tubería sale antes de consumir toda la salida.

Ejemplos

Python

Código que causa el error

# python script.py | head -1
import sys
for i in range(1000):
    print(i)  # BrokenPipeError after head closes the pipe

Error en la terminal

BrokenPipeError: [Errno 32] Broken pipe

Cómo solucionarlo

Captura BrokenPipeError alrededor de tus operaciones de escritura y sal limpiamente. Para scripts que escriben en stdout, cerrar sys.stderr antes de salir suprime el traceback ruidoso. Este es un comportamiento esperado en tuberías Unix y generalmente no es un error en tu código.

Código corregido

import sys

try:
    for i in range(1000):
        print(i)
except BrokenPipeError:
    # Reader closed early, that is fine
    sys.stderr.close()

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