gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 22:06:25 25 4
gpt4 key购买 nike

我有一个程序可以使用 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 来使用这样的 readlines:

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

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

最佳答案

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

(这是从标准输出 Python 控制台窗口 中删除行的一般答案,与涉及 paramiko、ssh 等的特定问题无关)

另请参阅:herehere

不使用 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”来运行脚本。它不适用于 SciTe、Idle、Eclipse 或其他带有集成控制台窗口的编辑器。我正在等待自己的解决方案 here .

关于python - 如何从 python 中的标准输出中删除行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3732928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com