Заменить печатные операторы в Python 2.7

Как заменить печатные операторы в Python 2.7, например:

for i in range(100):
    print i,"% Completed"

#Result Must Be:
>>> 1 % Completed 

1 нужно заменить на 2 и так далее. Но не в другой строке и не в той же строке.

Я пытался искать об этом, нашел решение, такое как

from __future__ import print_function
print("i: "+str(i),end="\r")

Но они приводят к добавленным операторам печати. В моем print_function есть какое-то исправление или есть другое решение?


person Craziest Hacker    schedule 17.12.2015    source источник
comment
Не уверен, какой результат вы хотите. Вы хотите, чтобы каждый оператор печатался в цикле в одной строке?   -  person Rohit Jain    schedule 17.12.2015
comment
Я хочу, чтобы печатный оператор был заменен новым оператором, а не в новых строках или добавлен   -  person Craziest Hacker    schedule 17.12.2015
comment
Например, 1 % Completed должно стать 2 % Completed, но не 1 % Completed 2 % Completed.   -  person Craziest Hacker    schedule 17.12.2015
comment
Разве вы не можете просто заменить i на (i+1) в операторе печати?   -  person Tom Karzes    schedule 17.12.2015
comment
@TomKarzes Мне не нужно несколько печатных строк или операторов, я хочу заменить вывод.   -  person Craziest Hacker    schedule 17.12.2015
comment
Ваш код работает, если вы запускаете скрипт в оболочке, как и код в ответах ниже. Это не будет работать в IDE (ну, наверное, я не могу говорить за всех), и явно не работает в вашей.   -  person SiHa    schedule 17.12.2015


Ответы (2)


Вы хотите что-то вроде этого:

>>> import sys, time
>>> for i in range(100):
...     time.sleep(0.1)
...     sys.stdout.write('%d %% Completed \r' % (i,))
...     sys.stdout.flush()
person Rohit Jain    schedule 17.12.2015
comment
Извините, но я хочу, чтобы вывод был заменен, а не добавлен. - person Craziest Hacker; 17.12.2015
comment
@CraziestHacker Ты запустил это? - person Rohit Jain; 17.12.2015
comment
Да, именно так, как вы это разместили - person Craziest Hacker; 17.12.2015
comment
@CraziesestHacker Я не вижу, чтобы он добавлялся к предыдущему выводу в моей оболочке. Вы пропустили \r в конце строки? - person Rohit Jain; 17.12.2015
comment
@CraziestHacker: Мне кажется, вы запускаете код в среде IDE, а не в терминале оболочки? - person SiHa; 17.12.2015
comment
Я скопировал ваши заявления, так что ошибки в копировании нет. Мой вывод выглядит следующим образом: 0 % Completed 1 % Completed 2 % Completed 3 % Completed 4 % Completed 5 % Completed 6 % Completed 7 % Completed 8 % Completed 9 % Completed 10 % Completed 11 % Completed 12 % Completed 13 % Completed 14 % Completed 15 % Completed 16 % Completed 17 % Completed 18 % Completed 19 % Completed 20 % Completed 21 % Completed 22 % Completed - person Craziest Hacker; 17.12.2015
comment
Да, я работаю только в IDE, а не в оболочке. - person Craziest Hacker; 17.12.2015
comment
Скопировал где? На терминал напрямую? Не знаю, как вы его запускаете. Может, попробовать напечатать вручную и посмотреть? - person Rohit Jain; 17.12.2015
comment
Ну тогда не получится. Будет ли ваш код работать в оболочке после развертывания? Нет, он будет запущен в оболочке. - person SiHa; 17.12.2015
comment
Хорошо, это работает в оболочке, но не в IDE. Спасибо за ваши решения. - person Craziest Hacker; 17.12.2015
comment
как изменить его на Завершено: 100% вместо 100% Завершено - person TheCrazyProfessor; 22.05.2017

Ну вот:

from __future__ import print_function

for i in range(100):
    print('{0}% Completed\r'.format(i), end='')
print('100% Completed')

Установите более высокий диапазон, если вы действительно хотите, чтобы он работал в течение нескольких секунд.

person timgeb    schedule 17.12.2015
comment
Извините, но я хочу, чтобы вывод был заменен, а не добавлен. - person Craziest Hacker; 17.12.2015
comment
@CraziesestHacker мой код заменяет вывод, о чем вы говорите? - person timgeb; 17.12.2015
comment
Итак, ваш ответ не имеет значения, потому что в моем вопросе четко говорится о замене оператора вывода, но не добавлении его. - person Craziest Hacker; 17.12.2015
comment
@CraziesestHacker вывод заменяется, а не добавляется. Вы делаете что-то не так. - person timgeb; 17.12.2015