Как удалить строки из стандартного вывода в Python?
(это общий ответ для удаления строк из стандартного вывода Консольное окно Python , и не имеет ничего кделать со специфическим вопросом, связанным с paramiko, ssh и т. д.)
см. также: здесь и здесь
Вместо использования команды print
или print()
функция, используйте sys.stdout.write("...")
в сочетании с sys.stdout.flush()
.Чтобы стереть написанную строку, вернитесь к предыдущей строке и перезапишите все символы пробелами, используя sys.stdout.write('\r'+' '*n)
, где n
- количество символов в строке.
хороший примерговорит само за себя:
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)
edit вместо sys.stdout.write(msg); sys.stdout.flush()
, вы также можете использовать
print(msg, end='')
Для версий Python ниже 3.0, поставьте from __future__ import print_function
вв верхней части вашего скрипта / модуля, чтобы это работало.
Обратите внимание, что это решение работает для окна консоли Python stdout, например, запустите скрипт, щелкнув правой кнопкой мыши и выбрав «open with -> python».Он не работает для SciTe, Idle, Eclipse или других редакторов со встроенными консольными окнами.Я жду решения для этого здесь .