Comment réinitialiser le curseur au début de la même ligne en Python
La plupart des questions liées à ce sujet ici DONC est comme suit:
Comment imprimer des renseignements sur la même ligne sans l'introduction d'un
nouvelle ligne
Au lieu de cela, ma question est comme suit:
J'attends de voir l'effet suivant,
>> You have finished 10%
où la 10
continuer à augmenter dans le même temps. Je sais comment le faire en C++, mais ne peut pas
trouver une bonne solution en python.
source d'informationauteur q0987 | 2011-10-10
Vous devez vous connecter pour publier un commentaire.
La
\r
est le retour chariot. Vous avez besoin de la virgule à la fin de laprint
déclaration pour éviter le retour à la ligne automatique. Enfinsys.stdout.flush()
est nécessaire pour vider le buffer de sortie standard (stdout).Python 3
Vous pouvez utiliser des mots clés les arguments pour
print
:print('string', end='\r', flush=True)
end='\r'
remplace la valeur par défaut de fin de votre comportement en ligne avec'\r'
flush=True
vide le tampon, rendant le texte imprimé apparaissent immédiatement.Python 2
En 2.6+ vous pouvez utiliser
from __future__ import print_function
au début du script pour activer Python 3 comportement. Ou utiliser l'ancienne méthode:Python
print
met un saut de ligne après chaque commande, sauf si vous le supprimer par une virgule. Ainsi, la commande d'impression est:Notez la virgule à la fin.
Malheureusement, Python n'envoie la sortie vers le terminal après une ligne complète. Le ci-dessus n'est pas une ligne complète, de sorte que vous besoin de
flush
manuellement:Sur linux( et probablement sur windows), vous pouvez utiliser les malédictions module de cette
Benfit avec des malédictions, comme revêtue d'autre technique plus simple est que vous pouvez dessiner sur le terminal comme un programme graphique, parce que les malédictions offre de déménagement pour tout x,y de la position par exemple ci-dessous est un simple script qui met à jour quatre points de vue
à l'aide de
sys.stdout.write()
au lieu d'imprimer des travaux en python 2 et 3, sans aucun compromis.