J'ai besoin d'imprimer sur une ligne dans une boucle (Python 3.x). En regardant autour de SO déjà, j'ai mis cette ligne dans mon code:
print('{0} imported\r'.format(tot),)
Cependant, il imprime toujours plusieurs lignes en boucle. J'ai aussi essayé
sys.stdout.write('{0} imported\r'.format(tot))
mais cela n'imprime pas n'importe quoi sur la console ...
Quelqu'un sait ce qui se passe avec ça?
Dans le premier cas, certains systèmes traiteront \r
en tant que nouvelle ligne. Dans le second cas, vous n'avez pas flush
la ligne. Essaye ça:
sys.stdout.write('{0} imported\r'.format(tot))
sys.stdout.flush()
Le rinçage de la ligne n'est pas non plus nécessaire sur tous les systèmes, comme le rappelle Levon - mais c'est généralement une bonne idée lorsque vous utilisez \r
par ici.
Si vous souhaitez remplacer votre dernière ligne, vous devez ajouter\r (retour de caractère) et end = "" afin de ne pas passer à la ligne suivante.
values = range(0, 100)
for i in values:
print ("\rComplete: ", i, "%", end="")
print ("\rComplete: 100%")
Je préfère utiliser la solution de Jan mais de cette façon:
values = range(0, 101)
for i in values:
print ("Complete: ", i, "%", end="\r")
print ()