我试图让我的脚本的所有输出都在一行上,但输出的长度并不总是相同的,所以在打印下一行之前,我通过打印一行空白来“擦除”它。
有时,由于空格覆盖了输出,所以输出会闪烁。缓冲输出然后一次写入所有输出的最好方法是什么?
while(True):
print(' ' * width, end='\r')
print(f'Mouse position: {mouse.position}', end='\r', flush=True)
time.sleep(.05)发布于 2018-02-28 06:44:44
在打印下一个文本之前,不要用空格覆盖上一个文本。不需要擦除整行;打印新文本将覆盖前一行的大部分。只需在末尾打印足够的空格,以便擦除先前输出中可能存在的任何额外字符。找出您能得到的最长输出和最短输出之间的差异,并打印该空格的数量。假设差值为6;在末尾添加6个空格,如下所示:
while True:
print(f'Mouse position: {mouse.position} ', end='\r', flush=True)
time.sleep(.05)这个技巧是由一位前Apple II BASIC程序员带给你的,他希望他的文本不会闪烁……在1 MHz 8位处理器上。
发布于 2018-02-28 06:39:47
我相信你问的是填充,缓冲是完全不同的东西。
while(True):
print(f'Mouse position: {mouse.position:>15}', end='\r', flush=True)
time.sleep(.05)会强制它总是使用15个字符的空格来写余弦...你可以用<而不是>把弦放在左边,如果你想居中,你可以用^ ...另请参阅:https://pyformat.info/#string_pad_align
https://stackoverflow.com/questions/49019086
复制相似问题