in

python – Cómo imprimir sin una nueva línea o espacio

apple touch icon@2

lenooh satisfizo mi consulta. Descubrí este artículo mientras buscaba ‘python suprimir nueva línea’. Estoy usando INACTIVO 3 en Raspberry Pi para desarrollar Python 3.2 para Masilla.

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 no se asuste porque el programa no se ha detenido ni ha sido enviado a almorzar en un bucle infinito feliz, como una súplica para ‘déjame en paz, estoy bien, pero esto puede llevar algún tiempo. mensaje interactivo, como una barra de progreso en el texto.

los print('Skimming for', search_string, 'b! .001', end='') inicializa el mensaje preparándose para la siguiente escritura de pantalla, que imprimirá tres espacios hacia atrás como ⌫⌫⌫ rubout y luego un punto, borrando ‘001’ y extendiendo la línea de puntos.

Después search_string entrada del usuario de los loros, el b! recorta el signo de exclamación de mi search_string texto para retroceder sobre el espacio que print() de lo contrario fuerza, colocando correctamente la puntuación. A esto le sigue 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 con una longitud de tres con ceros a la izquierda) para que el usuario advierta que se está procesando el progreso y que también reflejará el recuento de períodos que luego construiremos 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('bbb.'+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 carne de la barra de progreso está en el sys.stdout.write('bbb.'+format(page, '03')) línea. Primero, para borrar hacia la izquierda, retrocede el cursor sobre los tres caracteres numéricos con ‘ b b b’ como ⌫⌫⌫ borrado y coloca un nuevo período para agregar a la longitud de la barra de progreso. Luego escribe tres dígitos de la página a la que ha progresado hasta ahora. Porque sys.stdout.write() espera a que se cierre el búfer completo o el canal de salida, el sys.stdout.flush() fuerza la escritura inmediata. sys.stdout.flush() está construido al final de print() que se pasa por alto con print(txt, end='' ). Luego, el código recorre sus operaciones mundanas que requieren mucho tiempo mientras no imprime nada más hasta que regresa aquí para borrar tres dígitos, agregar un punto y escribir tres dígitos nuevamente, incrementados.

Los tres dígitos borrados y reescritos de ninguna manera son 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 elegantes espacios de retroceso de barra invertida-b ⌫ (por supuesto, no escribir también el recuento de páginas formateadas) simplemente imprimiendo la barra de punto más larga 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 IDLE 3 no respeta el retroceso como ⌫ rubout, sino que imprime un espacio, creando una lista aparente de fracciones.

Deja una respuesta

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

angular 7

Tutorial de Angular7

7sEqSHZ8Xjj47dGQMsp8aX 1200 80

Cómo desbloquear el plano de Warzone Serac CX-9 SMG