I'm working on a small command-line game in python where I am showing a progress bar using the tqdm module. I listen for user input using the msvcrt module to interrupt the progress. Once interrupted, the user can restart by entering 'restart' into the command line prompt. The second time the progress bar is shown, instead of updating the same line with the progress, it creates a new line each time.
How would I get it to show the progress on the same line?
This code snippet illustrates my use of the progress bar.
def transfer():
for i in tqdm.tqdm(range(1000), desc="Transfer progress", ncols=100, bar_format='{l_bar}{bar}|'):
sleep(.1)
if msvcrt.kbhit():
if msvcrt.getwche() == ' ':
interrupt()
break
def interrupt():
type("File transfer interrupted, to restart the transfer, type 'restart'")
Try with position=0
and leave=True
(Solution working in Google Colab to avoid printing to a newline)
from tqdm import tqdm
import time
def foo_():
time.sleep(0.3)
range_ = range(0, 10)
total = len(range_)
with tqdm(total=total, position=0, leave=True) as pbar:
for i in tqdm((foo_, range_ ), position=0, leave=True):
pbar.update()
tqdm_notebook is deprecated. You must use tq.notebook.tqdm instead.
import tqdm.notebook as tq
for i in tq.tqdm(...):
Furthermore, tqdm_notebook was really miserable in terms of performances. That's fully corrected with the new library.
I have realized that closing tqdm instances before using tqdm again fixes the problem of printing status bar in a new line on Jupyter Lab:
while len(tqdm._instances) > 0:
tqdm._instances.pop().close()
Or even better, thanks to Nirmal for the suggestion:
tqdm._instances.clear()
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With