Python sys.stdout.flush() не работает

Я хочу видеть ход выполнения цикла for, многократно перезаписывая функцию печати. Я ожидал, что напечатанная строка будет перезаписываться каждый раз при выполнении цикла. Случилось так, что после каждого цикла новая строка печаталась прямо под предыдущей напечатанной строкой. Это было решено путем удаления \n из строки печати, потому что \n каждый раз перезаписывал новую пустую строку, а не первую напечатанную строку.

import sys
import time

count1=0
x=10
for i in range(x):
    count1+=1
    sys.stdout.write("\r{} out of {}...\n".format(count1, x))
    sys.stdout.flush()
    time.sleep(.1)

Я использую Python 3.6 (64-разрядная версия) в Jupter Notebook 4.3.1. в Windows 10.

Я просмотрел несколько проблем, опубликованных на Stack Overflow, но пока не смог их решить.

Спасибо!


person vipama    schedule 02.05.2018    source источник
comment
не работает не является полезным описанием проблемы. Расскажите, что именно ваш код делает не так, как ожидалось.   -  person VPfB    schedule 02.05.2018
comment
Ты прав. Я ожидал, что напечатанная строка будет перезаписываться каждый раз при выполнении цикла. Случилось так, что после каждого цикла новая строка печаталась прямо под предыдущей напечатанной строкой. Это было решено путем удаления \n из строки печати, потому что \n каждый раз перезаписывал новую пустую строку, а не первую напечатанную строку.   -  person vipama    schedule 02.05.2018
comment
Спасибо за добавление недостающей информации.   -  person VPfB    schedule 02.05.2018


Ответы (1)


Удалите "\n", который создает новую строку.

sys.stdout.write("\r{} out of {}...".format(count1, x))
person Kefeng91    schedule 02.05.2018