python overwrite previous line
Solution 1
Prefix your output with carriage return symbol '\r'
and do not end it with line feed symbol '\n'
. This will place cursor at the beginning of the current line, so output will overwrite previous its content. Pad it with some trailing blank space to guarantee overwrite. E.g.
sys.stdout.write('\r' + str(hpi) + ' ' * 20)
sys.stdout.flush() # important
Output the final value as usual with print
.
I believe this should work both in most *nix terminal emulators and Windows console. YMMV, but this is the simplest way.
Solution 2
Check out this answer. Basically \r
works fine, but you have to make sure you print without the newline characters.
cnt = 0
print str(cnt)
while True:
cnt += 1
print "\r" + str(cnt)
This won't work because you print a new line every time, and \r
just goes back to the previous newline.
Adding a comma to the print
statement will prevent it from printing a newline, so \b
will go back to the beginning of the line you just wrote, and you can write over it.
cnt = 0
print str(cnt),
while True:
cnt += 1
print "\r" + str(cnt),
![Cinder](https://i.stack.imgur.com/LPN1e.png?s=256&g=1)
Comments
-
Cinder almost 2 years
how do you overwrite the previous print in python 2.7? I am making a simple program to calculate pi. here is the code:
o = 0 hpi = 1.0 i = 1 print "pi calculator" acc= int(raw_input("enter accuracy:")) if(acc>999999): print "WARNING: this might take a VERY long time. to terminate, press CTRL+Z" print "precision: " + str(acc) while i < acc: if(o==0): hpi *= (1.0+i)/i o = 1 elif(o==1): hpi *= i/(1.0+i) o = 0 else: print "loop error." i += 1 if i % 100000 == 0: print str(hpi*2)) print str(hpi*2))
It basicly outputs the current pi after 100000 calculations. how can I make it overwrite the previous calculation?