2011-05-06 7 views

Respuesta

21

Si agrega "\ n", la secuencia se vacía automáticamente y no tiene una nueva línea al final. Puede descargar la salida con:

sys.stdout.flush()

+0

Subí todas las respuestas excepto la tuya porque es la menos explicativa – eyquem

7

Porque stdout está almacenado en el búfer. Es posible que pueda forzar la salida más pronto con una llamada sys.stdout.flush().

2

Buffering. Realmente no es Python, sino su sistema operativo/terminal. La salida de cualquier programa se envía a un buffer, un área de espera de la memoria. Cuando se recopila una línea completa, se envía a la pantalla. Generalmente hay un gancho, un método llamado algo así como flush(), para forzar la salida de líneas parciales.

1

considerar que cuando se escribe un comando en un ordenador, que no sabe haya terminado hasta que pulse ENTER

Del mismo modo, el salto de línea le dice a Python que haya terminado de esa línea.

4

Se debe a que la salida en Python está almacenada de manera predeterminada; normalmente no obtendrá la salida hasta que el búfer esté lleno o algo cause que el búfer se vacíe. En este caso, se detectó el \n y provocó una descarga automática.

Ver esta pregunta para formas de evitar el problema: How to flush output of Python print?

4

El comando sys.stdout.write del módulo sys imprime a propósito a cabo la declaración sin el carácter \ n. Así es como funciona una llamada normal a la secuencia stdout, como en C++ o C, donde el carácter \ n debe agregarse manualmente.

Sin embargo, el comando de impresión proporcionado por Python agrega automáticamente un carácter \ n a la cadena, por lo tanto, simplifica el código y lo hace más fácil de leer.

La razón por la que ocurre el fenómeno en el primer resultado es porque el sistema está esperando a que se imprima una descarga, que es proporcionada por el carácter \ n. Puede evitar esto usando este comando, sys.stdout.flush(), que purgará la corriente de stdout que lo fuerza a imprimir.

Cuestiones relacionadas