python `print` не работает в цикле

У меня есть несколько циклов вместе и сон в самом внутреннем цикле. например:

from time import sleep for i in range(10): print i, for j in range(-5,5): if j > 0: print '.', else: print 'D', sleep(1) print '' 

если вы запустите код, вы можете ожидать получить значение i после него D sleep 1 second и еще один D и снова спать до конца.

но результат разницы, он ждет 10 секунд и печатает всю строку 0 DDDDDD . . . . 0 DDDDDD . . . . и снова ожидание печати следующей строки.

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

2 Solutions collect form web for “python `print` не работает в цикле”

Из-за существования запятой выходные буферы до \n .

Вы должны очистить stdout после каждой печати или использовать sys.stdout.write и буфер для очистки.

Определите свой метод печати:

 import sys def my_print(text): sys.stdout.write(str(text)) sys.stdout.flush() 

и в конце строки напечатайте a \n

Проблема с использованием print <something>, является буферизацией и печатью только тогда, когда идентификатор результата готов к печати.

Вы можете решить эту print_function с помощью print_function с __future__ (что также будет соответствовать Python 3):

 from __future__ import print_function from time import sleep import sys for i in range(10): print(i, end='') for j in range(-5,5): if j > 0: print('.', end='') else: print('D', end='') sys.stdout.flush() sleep(1) print('') 
Interesting Posts

Ошибка python check_output с статусом выхода 1, но Popen работает для той же команды

Как удаленная отладка в PyCharm

Поскольку Django 1.2.1 'prepopulated_fields' не будет препопыляться в admin

как я могу использовать шаблон электронной почты в следующей функции?

Python: «TypeError: __str__ возвращен не-строка», но все же печатает на выходе?

Начать nano как подпроцесс из python, захватить ввод

Создайте список, подобный объекту, используя bitarray

Как использовать gstreamer для создания аудиоклипа из сегмента более длинного источника?

Как я могу использовать нецелые строковые метки с SVM из scikit-learn? питон

Tweepy Twitter получает ответы на все твиты конкретного пользователя

Регулярное выражение для одиночных комментариев

Каналы Django – пример эха не работает

многопроцессорность в консоли IPython на компьютере Windows – если требование __name_

Python 3 – Может ли мариновать байтовые объекты размером более 4 ГБ?

Загрузка файлов с помощью кнопки «Обзор» в Jupyter и их использование / сохранение

Python - лучший язык программирования в мире.