recently I want to add a simple progress bar to my script, I use tqdm
to that, but what puzzle me is that the output is different when I am in the IDLE or in the cmd
for example this
from tqdm import tqdm import time def test(): for i in tqdm( range(100) ): time.sleep(0.1)
give the expected output in the cmd
but in the IDLE the output is like this
0%| | 0/100 [00:00<?, ?it/s] 1%|1 | 1/100 [00:00<00:10, 9.14it/s] 2%|2 | 2/100 [00:00<00:11, 8.77it/s] 3%|3 | 3/100 [00:00<00:11, 8.52it/s] 4%|4 | 4/100 [00:00<00:11, 8.36it/s] 5%|5 | 5/100 [00:00<00:11, 8.25it/s] 6%|6 | 6/100 [00:00<00:11, 8.17it/s] 7%|7 | 7/100 [00:00<00:11, 8.12it/s] 8%|8 | 8/100 [00:00<00:11, 8.08it/s] 9%|9 | 9/100 [00:01<00:11, 8.06it/s] 10%|# | 10/100 [00:01<00:11, 8.04it/s] 11%|#1 | 11/100 [00:01<00:11, 8.03it/s] 12%|#2 | 12/100 [00:01<00:10, 8.02it/s] 13%|#3 | 13/100 [00:01<00:10, 8.01it/s] 14%|#4 | 14/100 [00:01<00:10, 8.01it/s] 15%|#5 | 15/100 [00:01<00:10, 8.01it/s] 16%|#6 | 16/100 [00:01<00:10, 8.00it/s] 17%|#7 | 17/100 [00:02<00:10, 8.00it/s] 18%|#8 | 18/100 [00:02<00:10, 8.00it/s] 19%|#9 | 19/100 [00:02<00:10, 8.00it/s] 20%|## | 20/100 [00:02<00:09, 8.00it/s] 21%|##1 | 21/100 [00:02<00:09, 8.00it/s] 22%|##2 | 22/100 [00:02<00:09, 8.00it/s] 23%|##3 | 23/100 [00:02<00:09, 8.00it/s] 24%|##4 | 24/100 [00:02<00:09, 8.00it/s] 25%|##5 | 25/100 [00:03<00:09, 8.00it/s] 26%|##6 | 26/100 [00:03<00:09, 8.00it/s] 27%|##7 | 27/100 [00:03<00:09, 8.09it/s] 28%|##8 | 28/100 [00:03<00:09, 7.77it/s] 29%|##9 | 29/100 [00:03<00:09, 7.84it/s] 30%|### | 30/100 [00:03<00:08, 7.89it/s] 31%|###1 | 31/100 [00:03<00:08, 7.92it/s] 32%|###2 | 32/100 [00:03<00:08, 7.94it/s] 33%|###3 | 33/100 [00:04<00:08, 7.96it/s] 34%|###4 | 34/100 [00:04<00:08, 7.97it/s] 35%|###5 | 35/100 [00:04<00:08, 7.98it/s] 36%|###6 | 36/100 [00:04<00:08, 7.99it/s] 37%|###7 | 37/100 [00:04<00:07, 7.99it/s] 38%|###8 | 38/100 [00:04<00:07, 7.99it/s] 39%|###9 | 39/100 [00:04<00:07, 8.00it/s] 40%|#### | 40/100 [00:04<00:07, 8.00it/s] 41%|####1 | 41/100 [00:05<00:07, 8.00it/s]
I also get the same result if I make my own progress bar like
import sys def progress_bar_cmd(count,total,suffix="",*,bar_len=60,file=sys.stdout): filled_len = round(bar_len*count/total) percents = round(100*count/total,2) bar = "#"*filled_len + "-"*(bar_len - filled_len) file.write( "[%s] %s%s ...%s\r"%(bar,percents,"%",suffix)) file.flush() for i in range(101): time.sleep(1) progress_bar_cmd(i,100,"range 100")
why is that????
and there is a way to fix it???