我试图用比以前更短的打印来覆盖以前打印的终端行。移除和更换打印的项目 并试图找出如何使其适用于较短的印刷品,但给出的提示只是在前一行比新印刷品的文字短的情况下有效。的意思。
print('Test', end='\r')
print('TestTest')
打印 Test
先后 TestTest
变成同一条线,但
print('Tessst', end='\r')
print('Test')
印花 Tessst
先后 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}')
我找到了这个方法 此处