我有一个程序可以使用 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)
Run Code Online (Sandbox Code Playgroud)
我想从 ssh_stdout_host 中删除前 4 行。我尝试使用 StringIO 来使用这样的读取行:
output = StringIO("".join(ssh_stdout_host))
data_all = output.readlines()
Run Code Online (Sandbox Code Playgroud)
但此后我迷失了。什么是好的方法?我使用 python 2.6.5。谢谢。
如何从 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)
Run Code Online (Sandbox Code Playgroud)
编辑
而不是sys.stdout.write(msg); sys.stdout.flush()
,您也可以使用
print(msg, end='')
Run Code Online (Sandbox Code Playgroud)
对于低于 3.0 的 Python 版本,请将from __future__ import print_function
其放在脚本/模块的顶部才能正常工作。
请注意,此解决方案适用于 stdout Python 控制台窗口,例如,通过右键单击并选择“打开方式 -> python”来运行脚本。它不适用于 SciTe、Idle、Eclipse 或其他带有合并控制台窗口的编辑器。我在这里等待自己的解决方案。
归档时间: |
|
查看次数: |
11615 次 |
最近记录: |