我有一个程序,可以使用paramiko通过SSH获取一些数据:

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)

我想从ssh_stdout_host中删除前4行。我尝试使用Stringio使用这样的读取线:

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

但是在此之后我迷路了。什么是好方法?我使用Python 2.6.5。谢谢。

有帮助吗?

解决方案

读取线提供所有数据

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

其他提示

如何从Python中的Stdout中删除行?

(这是从Stdout中删除行的一般答案 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)

编辑代替 sys.stdout.write(msg); sys.stdout.flush(), ,您也可以使用

print(msg, end='')

对于低于3.0的Python版本,请 from __future__ import print_function 在您的脚本/模块的顶部为此工作。

请注意,此解决方案适用于STDOUT PYTHON控制台窗口,例如,通过右键单击和选择“使用 - > python”来运行脚本。它不适合使用Incorpated Console Windows的Scite,Idle,Eclipse或其他编辑器。我正在等待自己的解决方案 这里.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top