Python: How to print on same line, clearing previous text?

为君一笑 提交于 2019-12-11 05:10:59

问题


In Python you can print on the same line using \r to move back to the start of the line.

This works well for progress bars or increasing precentage counters, eg: Python print on same line

However when printing lines that may decrease in length, this leaves the previous lines text there, eg:

import sys
for t in ['long line', '%']:
    sys.stdout.write(t + '\r')
sys.stdout.write('\n')

Leaves the terminal text as: %ong line.

Whats the best way to write a shorter line after a longer one, when printing to the same line?


回答1:


Along with \r, the ansi-sequence \033[K is needed - erase to end of line.

This code works as expected.

import sys
for t in ['long line', '%']:
    sys.stdout.write('\033[K' + t + '\r')
sys.stdout.write('\n')



回答2:


I think the simplest way to do this is to write spaces over the characters. For this, it'd be a good idea to write as many spaces are needed to cover the last line only. Example:

previousLength = 0
for t in ["long line", "%"]:
    print(" " * previousLength, end="\r") 
    print(t, end="\r")

    previousLength = len(t)

print("\n")


来源:https://stackoverflow.com/questions/45263205/python-how-to-print-on-same-line-clearing-previous-text

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!