Как удалить строки из stdout в python? - PullRequest
2 голосов
/ 17 сентября 2010

У меня есть программа, которая получает некоторые данные через ssh, используя paramiko:

ssh = paramiko.SSHClient()

ssh.connect(main.Server_IP, username=main.Username, password=main.Password)

ssh_stdin_host, ssh_stdout_host, ssh_stderr_host =ssh_session.exec_command(setting.GetHostData)

Я хотел бы удалить первые 4 строки из ssh_stdout_host.Я пытался использовать StringIO, чтобы использовать readlines вроде этого:

output = StringIO("".join(ssh_stdout_host))
data_all = output.readlines()

Но я потерян после этого.Что было бы хорошим подходом?Я использую Python 2.6.5.Спасибо.

Ответы [ 2 ]

3 голосов
/ 24 июля 2011

Как удалить строки из стандартного вывода в 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 или других редакторов со встроенными консольными окнами.Я жду решения для этого здесь .

2 голосов
/ 17 сентября 2010

readlines предоставляет все данные

allLines = [line for line in stdout.readlines()]
data_no_firstfour = "\n".join(allLines[4:])
...