Dave Dave - 3 months ago 13
Python Question

How to refresh multiple printed lines inplace using Python?

I would like to understand how to reprint multiple lines in Python 3.5.

This is an example of a script where I would like to refresh the printed statement in place.

import random
import time

a = 0
while True:
statement = """
Line {}
Line {}
Line {}
Value = {}
""".format(random.random(), random.random(), random.random(), a)
print(statement, end='\r')
time.sleep(1)
a += 1


What I am trying to do is have:

Line 1
Line 2
Line 3
Value = 1


Write on top of / update / refresh:

Line 1
Line 2
Line 3
Value = 0


The values of each line will change each time. This is effectively giving me a status update of each Line.

I saw another question from 5 years ago however with the addition of the
end
argument in Python 3+ print function, I am hoping that there is a much simpler solution.

Answer

If you want to clear the screen each time you call print(), so that it appears the print is overwritten each time, you can use clear in unix or cls in windows, for example:

import subprocess
a = 0
while True:
    print(a)
    a += 1
    subprocess.call("clear")