Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: vipamaОтветов: 1

Я хочу видеть ход выполнения цикла 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, но пока не смог их решить.

Спасибо!

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

pythonoverwriteprintingsysflush

Ответы

Ответ 1 · рейтинг 1 · Kefeng91

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

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы