13

I want to print out i in my iteration on Jupyter notebook and flush it out. After the next iteration, I'll print the next i. I tried solutions from this question and this question, however, it just print out 0123...9 without flushing the output for me. Here is my working code:

import sys
import time

for i in range(10):
    sys.stdout.write(str(i)) # or print(i, flush=True) ?
    time.sleep(0.5)
    sys.stdout.flush()

these are my setup: ipython 5.1, python 3.6. Maybe, I missed something in the previous solution?

Community
  • 1
  • 1
titipata
  • 5,321
  • 3
  • 35
  • 59

3 Answers3

15
#Try this:
import sys
import time

for i in range (10):  
    sys.stdout.write('\r'+str(i))
    time.sleep(0.5)

'\r' will print at the beginning of the line

jose_bacoy
  • 12,227
  • 1
  • 20
  • 38
10

The first answer is correct but you don't need sys package. You can use the end parameter of the print function. It specifies what to print at the end, and its default value is \n(newline) (docs1, docs2). Use \r(carriage return) instead.

import time

for i in range (10):  
    print(i, end="\r")
    time.sleep(0.5) # This line is to see if it's working or not
Alperen
  • 3,772
  • 3
  • 27
  • 49
2

Try this

for i in range (10):  
    print("\r", end=str(i))
Striped
  • 2,544
  • 3
  • 25
  • 31