Comment effacer les caractères générés par Python

Code pour effacer la ligne courante

del_line.py


import sys
sys.stdout.write("\033[2K\033[G")
sys.stdout.flush()

Exemple d'utilisation

sample.py


import sys, time

for i in range(10):
    s = str(i)*(10-i)
    sys.stdout.write("\033[2K\033[G%s" % s)
    sys.stdout.flush()
    time.sleep(0.5)
print()

La sortie suivante est affichée sur la même ligne toutes les 0,5 seconde, effaçant la sortie précédente.

0000000000
111111111
22222222
3333333
444444
55555
6666
777
88
9

Commentaire

Vous pouvez utiliser quelque chose appelé CSI pour contrôler l'écran de la console pour la sortie standard et la sortie d'erreur. Référence: https://en.wikipedia.org/wiki/ANSI_escape_code En plus d'effacer des caractères, vous pourrez déplacer le curseur et changer la couleur des caractères.

La deuxième ligne \ 033 [2K de del_line.py correspond à" EL - Effacer en ligne "dans les codes CSI du Wiki ci-dessus, et c'est une commande pour supprimer la ligne avec le curseur. Chaque fois que vous utilisez CSI avec le message que \ 033 [ utilisera CSI, il sera affiché en premier. Le «2» suivant correspond à l'argument.

--Effacer de la position du curseur à la fin de la ligne si «0» ou omis --Si 1, supprimer du début de la ligne à la position du curseur --Si 2, supprimez la ligne avec le curseur

Ce sera. del_line.py efface toute la ligne. Le «K» final détermine le type de CSI.

Comme expliqué dans le Wiki, "EL - Effacer en ligne" a la propriété de ne pas changer la position du curseur, donc si vous voulez sortir des caractères après la ligne effacée, vous devez déplacer manuellement le curseur au début de la ligne. Il y a. Ceci peut être réalisé en utilisant "CHA - Cursor Horizontal Absolute". L'explication sur le Wiki dit "Déplace le curseur vers la colonne n (par défaut 1)", donc si vous sortez le code CSI avec n mis à 1 ou omis, le curseur se déplacera vers la première colonne (début de ligne). Le code CSI est CSI n G, remplacez donc la partie CSI par \ 033 [ pour en faire \ 033 [G`.

À l'origine, je voudrais que les caractères disparaissent tels quels, mais en Python, lors de la sortie de caractères, ils sont enregistrés une fois dans le tampon et sortis à la fois au moment du saut de ligne. Par conséquent, même si vous avez l'intention de sortir le code CSI pour effacer les caractères du code source, il ne sera pas reflété sur l'écran réel. Par conséquent, sys.stdout.flush () sort explicitement la chaîne de caractères stockée dans le tampon et la reflète à l'écran.

Avec ce qui précède, les caractères émis vers la console peuvent être effacés.

Lors de la suppression d'un seul caractère

print("abc\033[1D\033[K")

Résultat de sortie

ab

\ 033 [1D déplace le curseur vers la gauche et \ 033 [K supprime du curseur à la fin de la ligne.

Supplément

--Si la longueur des chaînes de caractères à afficher en continu est la même, ou si la sortie suivante est plus longue, vous pouvez l'écraser en déplaçant simplement le curseur au début de la ligne sans la commande d'effacement.

Recommended Posts

Comment effacer les caractères générés par Python
[Python] Comment afficher les valeurs de liste dans l'ordre
Comment obtenir la version Python
Comment écraser la sortie sur la console
Comment changer le fichier de configuration pour qu'il soit lu par Python
Comment effacer Python 2.x sur Mac.
Comment obtenir une sortie colorée sur la console
Comment utiliser la bibliothèque C en Python
Comment installer Python
[Python] Comment changer le format de la date (format d'affichage)
[Algorithm x Python] Comment utiliser la liste
Comment obtenir les fichiers dans le dossier [Python]
[Python] Comment trier les instances par variables d'instance
Comment générer "Ketsumaimo" en standard en Python
[Python] Comment gérer les caractères japonais avec openCV
python Comment notifier automatiquement par téléphone lorsque le système tombe en panne
[CentOS8] Comment afficher la sortie Python standard dans le journal systemd
Comment trier en spécifiant une colonne dans le tableau Python Numpy.
Comment lire toutes les classes contenues dans * .py dans le répertoire spécifié par Python
[python] Comment trier par le Nth Mth élément d'un tableau multidimensionnel
[Python] Comment supprimer les valeurs en double de la liste
Comment récupérer la nième plus grande valeur en Python
Comment obtenir le nom de la variable lui-même en python
Réfléchissez à la programmation de Python sur votre iPad
Comment obtenir le nombre de chiffres en Python
[Introduction à Python] Comment itérer avec la fonction range?
Comment connaître le répertoire actuel en Python dans Blender
[Réintroduction à python] Comment importer via le répertoire parent
Comment utiliser Raspeye Relay Module Python
[python] option pour désactiver la sortie de click.progressbar
[Python] Comment spécifier l'emplacement de téléchargement avec youtube-dl
Lisez le fichier xml en vous référant au didacticiel Python
Comment éliminer les caractères déformés dans l'image de sortie matplotlib
[Python] Comment utiliser la bibliothèque de création de graphes Altair
Comment savoir quelle version de Java Maven utilise
Décale la chaîne de l'alphabet de N caractères en Python
[Introduction à Udemy Python3 + Application] 27. Comment utiliser le dictionnaire
Comment enregistrer une table récupérée par python en csv
[Introduction à Udemy Python3 + Application] 30. Comment utiliser l'ensemble
[Python] Résumé de la façon de spécifier la couleur de la figure
Comment utiliser le modèle appris dans Lobe en Python
[Introduction à Python] Comment arrêter la boucle en utilisant break?
[Python] Comment réécrire le style de table avec python-pptx [python-pptx]
Comment profiter de Python sur Android !! Programmation en déplacement !!
Comment supprimer le préfixe du nom de base de données utilisé par pytest-django
Comment installer Python [Windows]
python3: Comment utiliser la bouteille (2)
Comment utiliser le générateur
Comment mettre à jour Tkinter de Python vers la version 8.6
Comment utiliser Python Argparse
[Python] Comment utiliser checkio
Comment exécuter Notepad ++ Python
Comment changer la version de Python
Comment développer en Python
[python] Comment juger scalaire
[Python] Comment utiliser input ()
Comment utiliser le décorateur
Comment utiliser Python lambda
[Python] Comment utiliser virtualenv
python3: Comment utiliser la bouteille (3)