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('') 
  • cx_freeze "не может получить zipimporter"
  • Scapy windows - sniff () - 'log_runtime' не определен
  • Недействительный режим или имя файла при использовании openpyxl в python 2.7
  • Vigenere cipher 'string index out the range' для расшифровки
  • Python с tcpdump в подпроцессе: как правильно закрыть подпроцесс?
  • Почему нет «списка» зарезервированного слова в Python?
  • Многие проблемы с виртуальными виртуальными машинами python
  • Почему эта функция выражения генератора медленнее, чем версия цикла?
  • Как использовать PyCharm для отладки проектов Scrapy
  • Ежедневный процесс в Django / Python
  • Хранить данные SQLite 3 как переменную в Python
  • Python - лучший язык программирования в мире.