Comment supprimer les lignes de stdout en python?
(ce qui est une réponse générale pour la suppression des lignes de la sortie standard fenêtre de la console Python, et n'a rien à voir avec la question spécifique impliquant paramiko, ssh, etc.)
voir aussi: here et here
Au lieu d'utiliser la commande print
ou la fonction print()
, utilisez sys.stdout.write("...")
combiné avec sys.stdout.flush()
. Pour effacer la ligne écrite, retournez à la ligne précédente et remplacez tous les caractères par des espaces en utilisant sys.stdout.write('\r'+' '*n)
, où n
est le nombre de caractères de la ligne.
un bel exemple dit tout:
import sys, time
print ('And now for something completely different ...')
time.sleep(0.5)
msg = 'I am going to erase this line from the console window.'
sys.stdout.write(msg); sys.stdout.flush()
time.sleep(1)
sys.stdout.write('\r' + ' '*len(msg))
sys.stdout.flush()
time.sleep(0.5)
print('\rdid I succeed?')
time.sleep(1)
modifier au lieu de sys.stdout.write(msg); sys.stdout.flush()
, vous pouvez également utiliser
print(msg, end='')
Pour les versions Python ci-dessous 3.0, mis from __future__ import print_function
au haut de votre script/module pour que cela fonctionne.
Notez que cette solution fonctionne pour la fenêtre de console Python stdout, par ex. lancez le script en faisant un clic droit et en choisissant 'open with -> python'. Cela ne fonctionne pas pour SciTe, Idle, Eclipse ou d'autres éditeurs avec des fenêtres de console incorporées. Je m'attends une solution pour cela here.
Google pour "syntaxe de liste de python" pour tous les trucs cool que vous pouvez faire pour les listes de cette façon. – Powertieke
J'ai aussi utilisé Paramiko et je ne savais pas si stdout.readlines() renvoyait un itérateur ou la liste complète des lignes. La première ligne du code ci-dessus serait superflue si elle renvoie une liste. Mais je suppose que cela fait en sorte que le code ne sera pas en faute. – pyfunc
Merci! Exactement ce que je cherchais. –