Son dos formas diferentes de mostrar mensajes.
print
generalmente va a sys.stdout
y sabes a dónde va sys.stderr
. Vale la pena saber la diferencia entre stdin, stdout, and stderr.
stdout
se debe utilizar para la salida de programa normal, mientras que stderr
se debe reservar solo para los mensajes de error (ejecución anormal del programa). Existen utilidades para dividir estas transmisiones, lo que permite a los usuarios de su código diferenciar entre salida normal y errores.
print
puede imprimir sobre cualquier objeto de fichero, incluyendo sys.stderr
:
print >> sys.stderr, 'My error message'
Las ventajas de utilizar sys.stderr
de errores en lugar de sys.stdout son:
- Si el usuario redirigido a
stdout
un archivo, todavía ven errores en la pantalla.
- Está sin búfer, por lo que si se redirige
sys.stderr
a un archivo de registro, hay menos posibilidades de que el programa falle antes de que se haya registrado el error.
Vale la pena señalar que hay una tercera vía que se puede brindar un mensaje de cierre:
sys.exit('My error message')
Esto enviará un mensaje a stderr
y salida.
Gracias por la respuesta. – user225312