Как я могу отредактировать строку, которая была напечатана на стандартный вывод? - PullRequest
6 голосов
/ 31 марта 2011

Как мне отредактировать только что напечатанную строку? Например, для счетчика обратного отсчета (сначала печатается 30, затем меняется на 29 и т. Д.)

Спасибо.

Ответы [ 5 ]

6 голосов
/ 31 марта 2011

Распечатайте возврат каретки \r, и курсор вернется в начало строки. Убедитесь, что вы не печатаете новую строку \n в конце, потому что вы не можете вернуть строки назад. Это означает, что вы должны сделать что-то вроде:

import time
import sys
sys.stdout.write('29 seconds remaining')
time.sleep(1)
sys.stdout.write('\r28 seconds remaining')

(В отличие от print, который делает добавлением новой строки в конец того, что он пишет в stdout.)

1 голос
/ 31 марта 2011

Если вы нацелены на Unix / Linux, тогда «curses» делает написание консольных программ действительно легким. Он обрабатывает цвет, позиционирование курсора и т. Д. Проверьте упаковку Python: http://docs.python.org/library/curses.html

0 голосов
/ 31 марта 2011

Вы можете использовать модуль readline , который также может предоставить настраиваемое завершение и история команд .

0 голосов
/ 31 марта 2011

Вы не можете изменить то, что напечатали. То, что напечатано, напечатано. Но, как сказал bradley.ayers, вы можете вернуться к началу строки и напечатать что-то новое поверх старого значения.

0 голосов
/ 31 марта 2011

Если вы работаете с xterm-подобным устройством вывода, то способ, которым вы делаете это, - это ЗАПИСЬ вывода.Вы должны убедиться, что когда вы пишете номер, вы заканчиваете символом возврата каретки (без новой строки), который перемещает курсор назад к началу строки, не переходя к следующей строке.Следующий записанный вами текст заменит текущее отображаемое число.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...