Я хотел бы перезаписать что-то на строке выше в последовательной консоли. Есть ли характер, который позволяет мне двигаться вверх?
Спасибо.
Я хотел бы перезаписать что-то на строке выше в последовательной консоли. Есть ли характер, который позволяет мне двигаться вверх?
Спасибо.
Большинство терминалов понимают управляющие коды ANSI. Соответствующие коды для этого варианта использования:
"\033[F"
- переместить курсор в начало предыдущей строки"\033[A"
- переместить курсор вверх на одну строкуПример (Python):
print("\033[FMy text overwriting the previous line.")
Нет, не очень легко, для этого вам нужно будет использовать что-то вроде curses library, особенно если вы хотите иметь больше контроля над размещением курсора и делать больше программно.
Здесь ссылка на документы Python на Программирование с помощью Curses, и этот короткий учебник/пример могут также представлять интерес.
Я только что нашел эту заметку в docs в случае, если вы используете Windows:
Никто не сделал порт Windows для модуля curses. В Windows платформу, попробуйте модуль консоли, написанный Fredrik Lundh. Консоль модуль обеспечивает вывод курсора по адресу, а также полную поддержку мыши и клавиатуры, и доступен из http://effbot.org/zone/console-index.htm.
Я считаю, что для С++ существует библиотека NCurses, на связанной странице есть раздел перемещение курсора, если вы хотите сориентироваться с С++. Также есть Программирование NCurses HowTo.
Я давно использовал библиотеку curses с C.
Обновление
Я пропустил часть про запуск этого на терминале/последовательно, потому что для этой последовательности escape-последовательности ANSI, особенно для простой задачи, такой как ваша, будет проще, и я согласен с решением @SvenMarnach для этого.
for i in range(10):
print("Loading" + "." * i)
doSomeTimeConsumingProcessing()
sys.stdout.write("\033[F") # Cursor up one lin
Попробуйте это на Python и замените doSomeTimeConsumingProcessing() на любую необходимую процедуру и надейтесь, что это поможет
Возможно, я ошибаюсь, но:
#include <windows.h>
void gotoxy ( int column, int line )
{
COORD coord;
coord.X = column;
coord.Y = line;
SetConsoleCursorPosition(
GetStdHandle( STD_OUTPUT_HANDLE ),
coord
);
}
в стандартной консоли Windows.