繁体   English   中英

Python 3.8:覆盖并清除终端中先前的较短行

[英]Python 3.8: Overwrite and clear previous shorter line in terminal

我试图用比以前更短的打印覆盖以前打印的终端行。 我看了文章删除和替换打印的项目,并试图弄清楚如何使它适用于更短的打印,但是如果前一行比新打印的文本短,给定的提示只是工作。 意义:

print('Test', end='\r')
print('TestTest')

首先将Test打印到同一行,然后将TestTest打印到同一行,但

print('Tessst', end='\r')
print('Test')

首先打印Tessst ,然后Testst ,它保留第一次打印的最后两个字符。 我还尝试使用sys.stdout.flush() (这显然适用于较旧的 Python 版本)和打印选项flush=True但它们都不起作用。 是否有另一种方法可以使其发挥作用?

我为这个问题找到了一个体面的工作。 您可以只用 f 字符串的空格填充字符串的末尾。 我在问题中陈述的问题的完整代码将是:

print('Tessst', end='\r')
print(f'{"Test" : <10}')

我在这里找到了这种方式

flush() 只是意味着所有打印的数据都应该写入 output stream。 它与您尝试做的事情无关。

如果要覆盖当前行,可以在第二次打印后放置空格字符以清除屏幕上的字符单元格。 或者,如果您有像 Xterm 或 VT 仿真器这样的精美终端,则有一个转义序列会导致该行的 rest 被删除:

print('Tessst', end='\r')
print('Test\033[K')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM