如何从python中的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
脚本/模块的顶部以使其正常工作。
请注意,此解决方案适用于标准输出 Python 控制台窗口,例如,通过右键单击并选择“使用 -> python 打开”来运行脚本。它不适用于 SciTe、Idle、Eclipse 或其他带有控制台窗口的编辑器。我在这里等待自己的解决方案。