Python 3.8: 在终端中覆盖并清除之前的短行

问题描述 投票:0回答:1

我试图用比以前更短的打印来覆盖以前打印的终端行。移除和更换打印的项目 并试图找出如何使其适用于较短的印刷品,但给出的提示只是在前一行比新印刷品的文字短的情况下有效。的意思。

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

打印 Test 先后 TestTest 变成同一条线,但

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

印花 Tessst 先后 Testst 其中它保留了第一次打印的最后两个字符。我还尝试使用 sys.stdout.flush() (显然是针对旧版本的Python)和打印选项 flush=True 但都没有用。有没有其他的方法可以让它工作?

python printing terminal line overwrite
1个回答
0
投票

flush()只是意味着所有打印的数据都应该写入输出流。它与你要做的事情没有关系。

如果你想覆盖当前的行,你可以在你的第二次打印后加上空格字符,使屏幕上的字符单元空白。或者,如果你有一个像Xterm或VT模拟器这样的高级终端,有一个转义序列会导致其余的行被删除。

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

0
投票

我找到了一个很好的解决这个问题的方法 你可以在字符串的末尾用f字符串填充白色空格。那么,我在问题中所说的问题的完整代码将是。

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

我找到了这个方法 此处

© www.soinside.com 2019 - 2024. All rights reserved.