Я запускаю python версии 2.7.3 на MacOSX.
Рассмотрим этот блок кода:
from __future__ import print_function
import time
x = 0
while x < 5:
print(x)
x += 1
time.sleep(1)
Если я запустил этот script, я наблюдаю ожидаемый результат: цифры 0 через 4 с символом \n, добавленным к каждому номеру. Более того, каждый номер отображается после паузы в одну секунду.
0
1
2
3
4
Теперь рассмотрим этот блок кода:
from __future__ import print_function
import time
x = 0
while x < 5:
print(x, end='')
x += 1
time.sleep(1)
Результат - это то, что я ожидаю, 01234 без \n, но время неожиданно. Вместо того, чтобы отображать каждую цифру после паузы в одну секунду, процесс ждет четыре секунды, а затем отображает все пять номеров.
Почему print('string') ведет себя по-другому от print('string', end='') в while-loops? Есть ли способ отображать символы без символов новой строки, по одной секунде за раз? Я пробовал sys.stdout.write(str(x)), но он ведет себя так же, как print(end='').