Imprimir sin nueva línea en la función no funciona como debería en Python

Estoy haciendo una barra de progreso para mi script de carga y, por lo tanto, quiero imprimir una fila de varios “#” pero no puedo hacer que funcione. Cuando le digo a Python que no agregue una nueva línea, la elimina pero no funciona como se espera en las funciones. El uso de “print (‘#’, end = ”)” en Python 3 o “print ‘#’,” en Python 2 lo elimina, pero cuando se ejecuta en una función, no imprime nada hasta que se termina toda la función, No debe esperar al igual que la impresión normal.

import time i = 0 def status(): print('#', end='') while i < 60: status() time.sleep(1) i += 1 

Esto debería imprimir ‘#’ cada segundo pero no lo hace. Los imprime todos después de 60 segundos. Con solo imprimir (‘#’) lo imprime cada segundo como se espera. Realmente necesito una solución para esto. ¡Por favor ayuda!

Solución: “sys.stdout.flush ()” después de cada impresión 🙂

Probablemente deba vaciar el búfer de salida después de cada invocación de print . Consulte ¿Cómo vaciar la salida de impresión de Python?

Intenté su código en el IDLE para 2.5. Así que tuve que usar el formato de impresión como – imprimir ‘#’,

Esto es lo que obtengo cuando lo ejecuto: el sistema imprime el símbolo ‘#’ cada segundo. Al final del bucle recibo el aviso de nuevo en el IDLE. Entonces me parece que está haciendo lo que usted espera que haga.

¿Qué versión estás usando específicamente? Lo siento, no tengo la versión 3. Así que no puedo probarlo allí.

Siempre puedes usar la función strip() .