@lenooh a satisfait ma requête. J'ai découvert cet article en recherchant «python suppress newline». J'utilise IDLE3 sur Raspberry Pi pour développer Python 3.2 pour PuTTY. Je voulais créer une barre de progression sur la ligne de commande PuTTY. Je ne voulais pas que la page défile. Je voulais une ligne horizontale pour rassurer l'utilisateur de ne pas paniquer que le programme ne s'est pas interrompu ni envoyé pour déjeuner sur une joyeuse boucle infinie - comme un appel à `` me laisser être, je vais bien, mais cela peut prendre un certain temps. message interactif - comme une barre de progression dans le texte.
L' print('Skimming for', search_string, '\b! .001', end='')
initialise le message en préparant la prochaine sérigraphie, qui imprimera trois espaces arrière comme ⌫⌫⌫ effacement puis une période, en effaçant '001' et en étendant la ligne des périodes. Après search_string
la saisie par l'utilisateur des perroquets, le \b!
coupe le point d'exclamation de mon search_string
texte pour reculer sur l'espace qui print()
autrement force, en plaçant correctement la ponctuation. Cela est suivi d'un espace et du premier «point» de la «barre de progression» que je simule. Inutilement, le message est également amorcé avec le numéro de page (formaté à une longueur de trois avec des zéros en tête) pour prendre note de l'utilisateur que la progression est en cours de traitement et qui reflétera également le nombre de périodes que nous développerons plus tard dans le droite.
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 viande de la barre de progression est en sys.stdout.write('\b\b\b.'+format(page, '03'))
ligne. Tout d'abord, pour effacer vers la gauche, il sauvegarde le curseur sur les trois caractères numériques avec le "\ b \ b \ b" comme ⌫⌫⌫ rubout et supprime une nouvelle période à ajouter à la longueur de la barre de progression. Il écrit ensuite trois chiffres de la page vers laquelle il a progressé jusqu'à présent. Parce sys.stdout.write()
qu'attend la fermeture d'un tampon complet ou du canal de sortie, sys.stdout.flush()
force l'écriture immédiate. sys.stdout.flush()
est construit à la fin de print()
laquelle est contourné avecprint(txt, end='' )
. Ensuite, le code parcourt ses opérations quotidiennes intensives tout en n'imprimant rien de plus jusqu'à ce qu'il revienne ici pour effacer trois chiffres, ajouter un point et écrire à nouveau trois chiffres, incrémentés.
Les trois chiffres effacés et réécrits ne sont en aucun cas nécessaires - c'est juste un épanouissement qui illustre sys.stdout.write()
contre print()
. Vous pouvez tout aussi facilement amorcer avec un point et oublier les trois espaces arrière de barre oblique inversée fantaisie (bien sûr, n'écrivant pas également le nombre de pages formatées) en imprimant simplement la barre de période plus longtemps une par une - sans espaces ni nouvelles lignes en utilisant uniquement lesys.stdout.write('.'); sys.stdout.flush()
paire.
Veuillez noter que le shell Raspberry Pi IDLE3 Python n'honore pas le retour arrière comme ⌫ rubout mais imprime à la place un espace, créant à la place une liste apparente de fractions.
- (o = 8> wiz