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 ?

Comment puis-je écraser les sorties d'impression précédentes sur la même ligne en Python ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-08 18:20:11361parcourir

How Can I Overwrite Previous Print Outputs on the Same Line in 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn