Python - изменение предыдущей строки в консоли [дубликат]

41
задан dsolimano 31 October 2014 в 17:07
поделиться

4 ответа

Большинство терминалов понимают escape-коды ANSI . Код для перехода к началу предыдущей строки - "\033[F".

56
ответ дан Sven Marnach 25 August 2018 в 23:37
поделиться

Нет, не очень легко, для этого вам нужно будет использовать что-то вроде curses library , особенно если вы хотите иметь больше контроля над размещением курсора и делать больше программно.

Вот ссылка на документы Python на Программирование с помощью Curses , и этот короткий учебник / пример также может представлять интерес.

I просто нашел это примечание в docs в случае, если вы используете Windows:

Никто не сделал порт Windows модуля curses. На платформе Windows попробуйте модуль консоли, написанный Fredrik Lundh. Консольный модуль обеспечивает вывод текста с курсором, а также полную поддержку ввода мыши и клавиатуры и доступен из http://effbot.org/zone/console-index.htm .

Я считаю, что для C ++ существует библиотека NCurses , на связанной странице есть раздел , перемещающий курсор , если вы хотите сориентироваться с C ++. Кроме того, есть программирование NCurses HowTo .

Длительное время Я использовал библиотеку curses с C довольно успешно.

Обновление:

Я пропустил часть про запуск этого на терминале / последовательно, поскольку для этой последовательности escape-последовательности ANSI, особенно для простой задачи, такой как ваша, будет проще, и я согласен с решением @SvenMarnach для этого.

7
ответ дан Levon 25 August 2018 в 23:37
поделиться

Возможно, я ошибаюсь, но:

#include <windows.h>


void gotoxy ( int column, int line )
{
  COORD coord;
  coord.X = column;
  coord.Y = line;
  SetConsoleCursorPosition(
    GetStdHandle( STD_OUTPUT_HANDLE ),
    coord
    );
}

в стандартной консоли Windows.

1
ответ дан user2244507 25 August 2018 в 23:37
поделиться
for i in range(10):  
    print("Loading" + "." * i) 

    doSomeTimeConsumingProcessing()

    sys.stdout.write("\033[F") # Cursor up one lin

Попробуйте это на Python и замените doSomeTimeConsumingProcessing () на любую необходимую процедуру и надейтесь, что это поможет

2
ответ дан user7380054 25 August 2018 в 23:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: