["python"]
How to overwrite the previous print to stdout?

If I had the following code: for x in range(10): print(x) I would get the output of 1 2 etc.. What I would like to do is instead of printing a newline, I want to replace the previous value and overwrite it with the new value on the same line.
Simple Version One way is to use the carriage return ('\r') character to return to the start of the line without advancing to the next line. Python 3 for x in range(10): print(x, end='\r') print() Python 2.7 forward compatible from __future__ import print_function for x in range(10): print(x, end='\r') print() Python 2.7 for x in range(10): print '{}\r'.format(x), print Python 2.0-2.6 for x in range(10): print '{0}\r'.format(x), print In the latter two (Python 2-only) cases, the comma at the end of the print statement tells it not to go to the next line. The last print statement advances to the next line so your prompt won't overwrite your final output. Line Cleaning If you can’t guarantee that the new line of text is not shorter than the existing line, then you just need to add a “clear to end of line” escape sequence, '\x1b[1K' ('\x1b' = ESC): for x in range(75): print('*' * (75 - x), x, end='\x1b[1K\r') print() Long Line Wrap All these methods assume you’re not writing more than the length of the line. The carriage return only returns to the start of the current line, so if your output is longer than a line, you’ll only erase the last line. If this is enough of a problem that you need to control it, you can disable line wrapping to keep the cursor from wrapping to the next line. (Instead, the cursor sticks to the end of the line, and successive characters overwrite.) Line wrap is disabled with print('\x1b[7l', end='') and re-enabled with print('\x1b[7h', end=''). Note that there is no automatic re-enable of line wrap at any point: don’t leave the terminal broken if an exception ends your program!