Saltar al contenido

Cómo restablecer el cursor al comienzo de la misma línea en Python

Intenta entender el código bien antes de usarlo a tu trabajo y si ttienes algo que aportar puedes compartirlo con nosotros.

Solución:

import sys, time

for i in xrange(0, 101, 10):
  print 'r>> You have finished %d%%' % i,
  sys.stdout.flush()
  time.sleep(2)
print

Él r es el retorno de carro. Necesitas la coma al final del print instrucción para evitar saltos de línea automáticos. Por fin sys.stdout.flush() es necesario para vaciar el búfer a la salida estándar.

Para Python 3, puede usar:

print("r>> You have finished %".format(i), end='')

Pitón 3

Puede utilizar argumentos de palabras clave para print:

print('string', end='r', flush=True)

  • end='r' reemplaza el comportamiento predeterminado de final de línea con 'r'
  • flush=True vacía el búfer, haciendo que el texto impreso aparezca inmediatamente.

Pitón 2

En 2.6+ puedes usar from __future__ import print_function al comienzo de la secuencia de comandos para habilitar el comportamiento de Python 3. O usa la forma antigua:

de pitón print pone una nueva línea después de cada comando, a menos que lo suprima con una coma final. Entonces, el comando de impresión es:

print 'You have finished 0%r'.format(percentage),

Tenga en cuenta la coma al final.

Desafortunadamente, Python solo envía la salida a la terminal después de una línea completa. Lo anterior no es una línea completa, por lo que debe flush manualmente:

import sys
sys.stdout.flush()

En Linux (y probablemente en Windows) puedes usar un módulo curses como este

import time
import curses

win = curses.initscr()
for i in range(100):
    win.clear()
    win.addstr("You have finished %d%%"%i)
    win.refresh()
    time.sleep(.1)
curses.endwin()

El beneficio de curses en comparación con otras técnicas más simples es que puede dibujar en la terminal como un programa de gráficos, porque curses proporciona moverse a cualquier posición x, y, por ejemplo, a continuación hay un script simple que actualiza cuatro vistas

import time
import curses

curses.initscr()

rows = 10
cols= 30
winlist = []
for r in range(2):
    for c in range(2):
        win = curses.newwin(rows, cols, r*rows, c*cols)
        win.clear()
        win.border()
        winlist.append(win)

for i in range(100):
    for win in winlist:
        win.addstr(5,5,"You have finished - %d%%"%i)
        win.refresh()
    time.sleep(.05)
curses.endwin()

Sección de Reseñas y Valoraciones

Si guardas algún recelo o capacidad de perfeccionar nuestro post eres capaz de dejar un exégesis y con gusto lo analizaremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *