好的回车如何返回可变长度字符串的输出而不重叠字符串?

时间:2019-01-28 13:29:28

标签: python carriage-return

当我想改变长度的字符串时,如何在输出字符串的同时返回简单的脚本进度信息,同时又防止字符串重叠?看到这个简单的例子

import sys
import time
fewds = ["raspberry", "orange", "pineapple", "fig", "honeysuckle"]

for f in fewds:
    sys.stdout.write(f+"\r")
    sys.stdout.flush()
    time.sleep(0.5)

1 个答案:

答案 0 :(得分:2)

您可以跟踪打印的最后一行的长度,并使用str.ljust向下一行添加必要的空格,以完全覆盖上一行。

  

str.ljust(width [,fillchar])

     

返回左对齐的字符串   长度宽度的字符串。使用指定的fillchar完成填充   (默认为ASCII空间)。如果宽度返回原始字符串   小于或等于len。

因此,您的代码应为:

import sys
import time
fewds = ["raspberry", "orange", "pineapple", "fig", "honeysuckle"]

last_length = 0
for f in fewds:
    sys.stdout.write(f.ljust(last_length) + "\r")
    sys.stdout.flush()
    time.sleep(0.5)
    last_length = len(f)