Maison >développement back-end >Tutoriel Python >Comment puis-je écraser les sorties d'impression précédentes sur la même ligne en Python ?
Remplacement des sorties d'impression précédentes sur la même ligne
En programmation, il est courant de rencontrer des situations dans lesquelles vous devez mettre à jour une valeur existante affichée sur la sortie standard (stdout) sans ajouter de nouvelle ligne. Considérez le code Python suivant :
for x in range(10): print(x)
Ce code affiche les nombres de 1 à 10 sur des lignes séparées. Pour écraser la valeur précédente et la remplacer par la nouvelle valeur sur la même ligne, vous pouvez utiliser les techniques suivantes :
Version simple :
Utiliser le retour chariot ( 'r') pour revenir au début de la ligne sans passer à la ligne suivante.
Python 3 :
for x in range(10): print(x, end='\r') print()
Python 2.7 Compatible ascendant :
from __future__ import print_function for x in range(10): print(x, end='\r') print()
Python 2.7 :
for x in range(10): print '{}\r'.format(x), print
Python 2.0-2.6 :
for x in range(10): print '{0}\r'.format(x), print
Dans ces exemples, la virgule finale après l'instruction print supprime la nouvelle ligne. L'instruction d'impression finale passe à la ligne suivante, garantissant que votre invite n'écrase pas votre sortie.
Nettoyage de ligne :
Si vous ne pouvez pas garantir que la nouvelle ligne du texte n'est pas plus court que la ligne existante, vous pouvez utiliser la séquence d'échappement "effacer jusqu'à la fin de la ligne" 'x1b[1K' ('x1b' = ESC) :
for x in range(75): print('*' * (75 - x), x, end='\x1b[1K\r') print()
Long Line Wrap :
Les méthodes susmentionnées supposent que vous n'écrivez pas au-delà de la longueur de la ligne. Le retour chariot ne revient qu'au début de la ligne en cours. Par conséquent, si votre sortie dépasse la longueur de la ligne, vous n'effacerez que la dernière ligne.
Pour atténuer ce problème et empêcher le curseur de passer à la ligne suivante, vous pouvez désactiver le retour à la ligne :
print('\x1b[7l', end='') # Disable line wrapping print('\x1b[7h', end='') # Re-enable line wrapping
Veuillez noter que vous devez réactiver manuellement le retour à la ligne à la fin du bloc de code pour éviter de laisser le terminal dans un état cassé.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!