如何在python中从标准输出中删除行?

如何在python中从标准输出中删除行?,python,paramiko,Python,Paramiko,我有一个程序,它使用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\u stdout\u

我有一个程序,它使用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\u stdout\u主机上删除前4行。我尝试过使用StringIO来使用读线,如下所示:

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

但在这之后我迷失了方向。什么是好方法?我正在使用python 2.6.5。谢谢。

readlines提供了所有数据

allLines = [line for line in stdout.readlines()]
data_no_firstfour = "\n".join(allLines[4:])
如何在python中从标准输出中删除行

这是从stdoutpython控制台窗口删除行的一般答案,与涉及paramiko、ssh等的特定问题无关

另见:和

使用sys.stdout.write代替print命令或print函数。。。与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.writemsg;sys.stdout.flush,也可以使用

print(msg, end='')
对于低于3.0的Python版本,请将from _future _导入print_函数放在脚本/模块的顶部,以使其正常工作


请注意,此解决方案适用于stdoutpython控制台窗口,例如,通过右键单击并选择“openwith->Python”来运行脚本。它不适用于SciTe、Idle、Eclipse或具有合并控制台窗口的其他编辑器。我正在等待解决方案。

Google for python list slice语法提供了所有可以用这种方式创建列表的酷东西。此外,我使用了Paramiko,我不确定stdout.readlines是否返回迭代器或完整的行列表。如果上面代码的第一行返回一个列表,那么它将是超级行。但我想这可以确保代码不会出错。谢谢!这正是我想要的。