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
Libérer: 2024-12-08 18:20:11
original
393 Les gens l'ont consulté

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)
Copier après la connexion

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()
Copier après la connexion

Python 2.7 Compatible ascendant :

from __future__ import print_function
for x in range(10):
    print(x, end='\r')
print()
Copier après la connexion

Python 2.7 :

for x in range(10):
    print '{}\r'.format(x),
print
Copier après la connexion

Python 2.0-2.6 :

for x in range(10):
    print '{0}\r'.format(x),
print
Copier après la connexion

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()
Copier après la connexion

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
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal