我试图让我的所有脚本输出都在一行,但输出不会总是相同的长度,所以在我打印下一行I&之前#34;擦拭"它通过打印一行白色空间。
有时输出因白色空间覆盖而闪烁。什么是缓冲输出然后一次写入所有内容的最佳方法?
while(True):
print(' ' * width, end='\r')
print(f'Mouse position: {mouse.position}', end='\r', flush=True)
time.sleep(.05)
答案 0 :(得分:2)
在打印下一个文本之前,请勿用空格覆盖以前的文本。没有必要删除整条线;打印新文本将覆盖前一行的大部分内容。只需在末尾打印足够的空格,以清除前一个输出中可能存在的任何额外字符。找出你可以获得的最长输出和最短输出之间的差异,并打印出这些空间数。说差异是六;最后添加六个空格,如下所示:
while True:
print(f'Mouse position: {mouse.position} ', end='\r', flush=True)
time.sleep(.05)
这个技巧由前Apple II BASIC程序员带给你,他需要在1 MHz 8位处理器上不要闪烁......
答案 1 :(得分:1)
我相信你在询问填充,缓冲是完全不同的
while(True):
print(f'Mouse position: {mouse.position:>15}', end='\r', flush=True)
time.sleep(.05)
会强制它总是使用15个字符空格来编写坐标...你可以使用<
而不是>
将坐标放在左边,如果你想将它放在中心,你可以使用它^
...另请参阅:https://pyformat.info/#string_pad_align