@lenooh satisfizo mi consulta. Descubrí este artículo mientras buscaba 'python suprimir nueva línea'. Estoy usando IDLE3 en Raspberry Pi para desarrollar Python 3.2 para PuTTY. Quería crear una barra de progreso en la línea de comando PuTTY. No quería que la página se desplazara. Quería una línea horizontal para asegurarle al usuario que se volviera loco de que el programa no se ha detenido ni se ha enviado a almorzar en un alegre bucle infinito, como una súplica para que me deje, lo estoy haciendo bien, pero esto puede llevar algo de tiempo. mensaje interactivo: como una barra de progreso en el texto.
El print('Skimming for', search_string, '\b! .001', end='')
inicializa el mensaje mediante la preparación para la siguiente pantalla-escritura, que imprimirá tres teclas de retroceso como ⌫⌫⌫ rubout y después de un período, limpiando off '001' y que se extiende la línea de períodos. Después de search_string
la entrada del usuario de los loros, \b!
recorta el signo de exclamación de mi search_string
texto para retroceder sobre el espacio que de print()
otro modo fuerza, colocando correctamente la puntuación. Eso es seguido por un espacio y el primer 'punto' de la 'barra de progreso' que estoy simulando. Innecesariamente, el mensaje también se imprime con el número de página (formateado en una longitud de tres con ceros a la izquierda) para que el usuario tenga en cuenta que el progreso se está procesando y que también reflejará el recuento de períodos que luego desarrollaremos en el Derecha.
import sys
page=1
search_string=input('Search for?',)
print('Skimming for', search_string, '\b! .001', end='')
sys.stdout.flush() # the print function with an end='' won't print unless forced
while page:
# some stuff…
# search, scrub, and build bulk output list[], count items,
# set done flag True
page=page+1 #done flag set in 'some_stuff'
sys.stdout.write('\b\b\b.'+format(page, '03')) #<-- here's the progress bar meat
sys.stdout.flush()
if done: #( flag alternative to break, exit or quit)
print('\nSorting', item_count, 'items')
page=0 # exits the 'while page' loop
list.sort()
for item_count in range(0, items)
print(list[item_count])
#print footers here
if not (len(list)==items):
print('#error_handler')
La barra de progreso carne está en la sys.stdout.write('\b\b\b.'+format(page, '03'))
línea. Primero, para borrar a la izquierda, hace una copia de seguridad del cursor sobre los tres caracteres numéricos con el '\ b \ b \ b' como ⌫⌫⌫ rubout y suelta un nuevo punto para agregar a la longitud de la barra de progreso. Luego escribe tres dígitos de la página que ha progresado hasta ahora. Como sys.stdout.write()
espera a que se cierre un búfer completo o que se cierre el canal de salida, sys.stdout.flush()
fuerza la escritura inmediata. sys.stdout.flush()
está integrado en el final del print()
cual se pasa por alto print(txt, end='' )
. Luego, el código recorre sus operaciones intensivas de tiempo mundano mientras no imprime nada más hasta que vuelve aquí para borrar tres dígitos, agregar un punto y escribir tres dígitos nuevamente, incrementado.
Los tres dígitos borrados y reescritos no son de ninguna manera necesarios, es solo una floritura que ejemplifica sys.stdout.write()
versus print()
. Podrías cebar fácilmente con un punto y olvidarte de los tres sofisticados espacios de barra invertida-b ⌫ (por supuesto, no escribir también los recuentos de páginas formateadas) simplemente imprimiendo la barra de períodos más de una en una cada vez, sin espacios ni líneas nuevas usando solo el sys.stdout.write('.'); sys.stdout.flush()
par.
Tenga en cuenta que el shell Python de Raspberry Pi IDLE3 no respeta el espacio de retroceso como ⌫ rubout, sino que imprime un espacio, creando en su lugar una lista aparente de fracciones.
- (o = 8> wiz