Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
395 views
in Technique[技术] by (71.8m points)

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

In Python you can print on the same line using 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 + '
')
sys.stdout.write('
')

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?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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

This code works as expected.

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

Note, this doesn't work when the string includes tabs, you may want to replace:

sys.stdout.write('33[K' + t + ' ') with ...

sys.stdout.write('33[K' + t.expandtabs(2) + ' ')


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...