Я запускаю 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='')
.