首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Buffer stdout python

Buffer stdout python
EN

Stack Overflow用户
提问于 2018-02-28 06:36:11
回答 2查看 51关注 0票数 1

我试图让我的脚本的所有输出都在一行上,但输出的长度并不总是相同的,所以在打印下一行之前,我通过打印一行空白来“擦除”它。

有时,由于空格覆盖了输出,所以输出会闪烁。缓冲输出然后一次写入所有输出的最好方法是什么?

代码语言:javascript
复制
while(True):
    print(' ' * width, end='\r')
    print(f'Mouse position: {mouse.position}', end='\r', flush=True)
    time.sleep(.05)
EN

回答 2

Stack Overflow用户

发布于 2018-02-28 06:44:44

在打印下一个文本之前,不要用空格覆盖上一个文本。不需要擦除整行;打印新文本将覆盖前一行的大部分。只需在末尾打印足够的空格,以便擦除先前输出中可能存在的任何额外字符。找出您能得到的最长输出和最短输出之间的差异,并打印该空格的数量。假设差值为6;在末尾添加6个空格,如下所示:

代码语言:javascript
复制
while True:
    print(f'Mouse position: {mouse.position}      ', end='\r', flush=True)
    time.sleep(.05)

这个技巧是由一位前Apple II BASIC程序员带给你的,他希望他的文本不会闪烁……在1 MHz 8位处理器上。

票数 2
EN

Stack Overflow用户

发布于 2018-02-28 06:39:47

我相信你问的是填充,缓冲是完全不同的东西。

代码语言:javascript
复制
while(True):
    print(f'Mouse position: {mouse.position:>15}', end='\r', flush=True)
    time.sleep(.05)

会强制它总是使用15个字符的空格来写余弦...你可以用<而不是>把弦放在左边,如果你想居中,你可以用^ ...另请参阅:https://pyformat.info/#string_pad_align

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49019086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档