2015-07-20 4 views
1

Программа, которую я пишу, выполняет команды пользователя от input(), выполняет соответствующие функции и отображает соответствующий текст.Очистить терминал до точки x - Python

enter image description here

После примерно 5 команд-стоит текста, терминал становится загромождали даже тогда, когда окно развернуто. То, что я хотел бы сделать, это очистить терминал после каждых пяти команд, но только очистить текст, который предшествует (находится выше) пятой команде и ее выходному тексту.

Более конкретно, после того, как пользователь набрал пятую команду, после нажатия Return (ввод команды), я хочу, чтобы команды 1-4 и их соответствующие выходы очищали экран, но имели команду 5, и ее выход оставался на верхней части терминала.

Для демонстрации, вот что я хочу, экран будет выглядеть во время этого процесса:

enter image description here

выше становится ниже:

enter image description here

Использование os модуля и os.system('cls') или os.system('clear') функции не будут точно работать в этой ситуации. Я не хочу очищать весь текст на экране, просто текст до определенного момента.

Итак, как я могу это сделать на Windows с Python?

Примечание. Если решения просты, я хотел бы как метод стирания текста так, чтобы его нельзя было прокручивать назад, а также метод, позволяющий пользователям видеть предыдущие команды и текст.

+0

Почему бы не очистить экран с помощью 'os.system (" cls ")' или что-то еще, а затем 'print '>« + command', а затем обычный выход команды? –

+0

@GregHewgill Я думал, что может быть более чистая альтернатива, о которой я не знал. Я рассмотрел то, что вы предложили. – Jacob

ответ

2

Используя простой вывод терминала, на самом деле нет хорошего способа сделать это. Даже операция «очистки экрана» находится за пределами того, что обычно считается простым терминальным выходом, поэтому вы в конечном итоге вызываете внешнюю программу для этого.

Однако другой способ обработки вывода терминала - использовать библиотеку curses. Эта библиотека позволяет вам значительно контролировать то, как ваш вывод появляется на экране, и на самом деле включает в себя функции, такие как deleteln и insdelln, для удаления строк текста с экрана.

Смежные вопросы