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

Python 3.8:覆盖并清除终端中的前一个较短行,python,printing,terminal,line,overwrite,Python,Printing,Terminal,Line,Overwrite,我正在尝试用比以前更短的打印覆盖以前打印的终端行。 我看了这篇文章,并试图找出如何使其适用于较短的印刷品,但如果前一行比新印刷品的文本短,那么给出的提示就起作用了。意思是: print('Test', end='\r') print('TestTest') 首先打印Test,然后将TestTest打印到同一行,但 print('Tessst', end='\r') print('Test') 首先打印tesst,然后打印Testst,其中保留第一次打印的最后两个字符。我还尝试使用sys.st

我正在尝试用比以前更短的打印覆盖以前打印的终端行。 我看了这篇文章,并试图找出如何使其适用于较短的印刷品,但如果前一行比新印刷品的文本短,那么给出的提示就起作用了。意思是:

print('Test', end='\r')
print('TestTest')
首先打印
Test
,然后将
TestTest
打印到同一行,但

print('Tessst', end='\r')
print('Test')
首先打印
tesst
,然后打印
Testst
,其中保留第一次打印的最后两个字符。我还尝试使用
sys.stdout.flush()
(这显然适用于较旧的Python版本)和打印选项
flush=True
,但两者都不起作用。还有其他方法可以让它工作吗?

flush()只意味着所有打印的数据都应该写入输出流。这和你想做什么无关

如果要覆盖当前行,可以在第二次打印后添加空格字符,以清空屏幕上的字符单元格。或者,如果您有一个奇特的终端,如Xterm或VT仿真器,则有一个转义序列将导致删除该行的其余部分:

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

我找到了解决这个问题的好办法。只需在字符串的末尾填充带有f字符串的空格即可。我在问题中所述问题的完整代码是:

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

print(f'{“Test”:我忘了提到我也尝试过这种方法,但对我来说,它只是不断打印一个带有问号的正方形,后面跟着
[80P
,因为它似乎无法识别
\033[80P
,那么你可以在第二次打印的末尾添加空格()来掩盖剩下的部分。这很有效,谢谢,但这不是一个很好看的方式:D