Python: возврат каретки перестает работать после 10000-го раза - PullRequest
0 голосов
/ 13 мая 2019

Я нашел способ сделать индикатор выполнения и использовал его, чтобы визуализировать, как далеко продвинулся сценарий.Я использовал его для начала каждого цикла, но он быстро стал беспорядочным, поэтому я обновил его, чтобы он работал для всего файла.

При использовании возврата каретки в Python после 10 000-й попытки перезаписать эту строкуначинает игнорировать возврат каретки и просто печатает новую строку каждый раз.

Этот код работал в прошлом, но при переключении на работу для всего файла в одном баре он ломается.

def ProgressBar (iteration, total, tot_len = 50, fill = '█', empty = '-'):
    iteration+=1 #to fix the OBO issue
    percents = round(100.0*iteration/float(total),1)
    filled_len = int(round(tot_len * percents/100.0))
    bar = fill * filled_len + empty * (tot_len - filled_len)
    sys.stdout.write(' |%s| %s%s (%s/%s) \r' % (bar, percents, '%', iteration, total))
    sys.stdout.flush()
    if iteration == total:
        print ' '

Я ожидал бы, что это будет перезаписывать одну и ту же строку непрерывно, независимо от того, сколько раз вызывается функция, но после 10000 вызовов in перестанет перезаписывать одну и ту же строку.

В итоге я получаю это

|████----------------------------------------------| 8.3% (10000/120000) 
|████----------------------------------------------| 8.3% (10001/120000) 
|████----------------------------------------------| 8.3% (10002/120000) 
|████----------------------------------------------| 8.3% (10003/120000) 
|████----------------------------------------------| 8.3% (10004/120000) 
|████----------------------------------------------| 8.3% (10005/120000) 
|████----------------------------------------------| 8.3% (10006/120000) 
|████----------------------------------------------| 8.3% (10007/120000) 
|████----------------------------------------------| 8.3% (10008/120000) 
|████----------------------------------------------| 8.3% (10009/120000) 
|████----------------------------------------------| 8.3% (10010/120000) 
|████----------------------------------------------| 8.3% (10011/120000) 
|████----------------------------------------------| 8.3% (10012/120000) 
|████----------------------------------------------| 8.3% (10013/120000) 
|████----------------------------------------------| 8.3% (10014/120000) 
|████----------------------------------------------| 8.3% (10015/120000) 

и он просто продолжает идти.

1 Ответ

0 голосов
/ 14 мая 2019

В какой-то момент увеличение числа увеличит его длину до точки, в которой одна строка не уместится на линии терминала.Если этот предел равен 10 000, вам необходимо соответственно увеличить tot_len.

...