缓冲stdout python

时间:2018-02-27 22:36:11

标签: python

我试图让我的所有脚本输出都在一行,但输出不会总是相同的长度,所以在我打印下一行I&之前#34;擦拭"它通过打印一行白色空间。

有时输出因白色空间覆盖而闪烁。什么是缓冲输出然后一次写入所有内容的最佳方法?

while(True):
    print(' ' * width, end='\r')
    print(f'Mouse position: {mouse.position}', end='\r', flush=True)
    time.sleep(.05)

2 个答案:

答案 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