Is there a way in python to print something in the command line above the last line printed? Or, similarly to what I want to achieve, remain the last line intact, that is, not overwrite it.
The goal of this is to let the last line in the command line a status/precentage bar.
Output example:
File 1 processed (0.1% Completed)
Next refresh:
File 1 processed File 2 processed (0.2% Completed)
Next refresh:
File 1 processed File 2 processed File 3 processed (0.3% Completed)
Advertisement
Answer
from time import sleep erase = 'x1b[1Ax1b[2K' def download(number): print(erase + "File {} processed".format(number)) def completed(percent): print("({:1.1}% Completed)".format(percent)) for i in range(1,4): download(i) completed(i/10) sleep(1)
Works in my python 3.4, final output is:
File 1 processed File 2 processed File 3 processed (0.3% Completed)
If you want read more about terminal escape codes see: Wikipedia’s ANSI escape codes article.
As requested, example with a space:
from time import sleep erase = 'x1b[1Ax1b[2K' def download(number): print(erase*2 + "File {} processed".format(number)) def completed(percent): print("n({:1.1}% Completed)".format(percent)) print("n(0.0% Completed)") for i in range(1,5): download(i) completed(i/10) sleep(1)
The final output is:
File 1 processed File 2 processed File 3 processed File 4 processed (0.4% Completed)