Удалить последнюю строку ввода в Python

У меня есть следующий код:

num = int(raw_input("input number: "))
print "\b" * 20

Консольный вывод выглядит так

input number: 10

Я хочу удалить текстinput number: 10 после того, как пользователь нажимаетENTER, Клавиша возврата\b не могу этого сделать.

 Maria Zverina31 мая 2012 г., 10:11
под какой операционной системой вы работаете?
 xralf31 мая 2012 г., 10:25
@MariaZverina Ubuntu 12.04

Ответы на вопрос(4)

import sys

print "Welcome to a humble little screen control demo program"
print ""

# Clear the screen
#screen_code = "\033[2J";
#sys.stdout.write( screen_code )

# Go up to the previous line and then
# clear to the end of line
screen_code = "\033[1A[\033[2K"
sys.stdout.write( screen_code )
a = raw_input( "What a: " )
a = a.strip()
sys.stdout.write( screen_code )
b = raw_input( "What b: " )
b = b.strip()
print "a=[" , a , "]"
print "b=[" , b , "]"

Вы можете использовать модуль ОС

import os
os.system('clear')

& Quot; cls & quot; и & quot; очистить & quot; являются командами, которые очищают терминал (то есть приглашение DOS или окно терминала).

Для IDLE: лучшее, что вы можете сделать, это прокрутить экран вниз на множество строк, например:

print "\n" * 100
 xralf31 мая 2012 г., 10:39
Мне известна эта команда, но я бы хотел удалить только текст "вводимый номер: X" потому что текст выше не должен быть удален.
 31 мая 2012 г., 11:13
Почему нужно удалить это ... каково ваше точное требование?
 xralf31 мая 2012 г., 11:23
Я читаю в интерактивном режиме в цикле и не хочу, чтобы на терминале было много текста. Объяснение всего контекста будет долгим и не по теме.

Существуют управляющие последовательности для «слова назад»; и «обратная линия»; и тому подобное, чтобы переместить курсор. Таким образом, вы можете попытаться переместить курсор назад к началу текста, который вы хотите удалить, и заменив его пробелами. Но это усложняется очень быстро. К счастью, Python имеет стандартмодуль проклятий для "расширенной обработки терминала".

Единственная проблема в этом состоит в том, что на данный момент он не является кроссплатформенным - этот модуль никогда не был перенесен на Windows. Итак, если вам нужна поддержка Windows, взгляните наКонсольный модуль.

 xralf31 мая 2012 г., 10:37
Знаете ли вы, какие функции отcurses модуль будет полезен?
 31 мая 2012 г., 10:48
@xralf вы хотите создатьwindow возражатьcurses.initscr()и получить сделать ваш ввод-вывод, используя методы окна, а неprint а такжеraw_input, Затем, когда вы хотите удалить всю строку, вам нужно убедиться, что курсор находится где-то на этой строке, и вызвать.deleteln() на окне.
Решение Вопроса

Это будет работать в большинстве терминалов Unix и Windows ... он использует очень простой выход ANSI.

num = int(raw_input("input number: "))
print "\033[A                             \033[A"    # ansi escape arrow up then overwrite the line

Обратите внимание, что в Windows вам может потребоваться включить поддержку ANSI, используя следующие http://www.windowsnetworking.com/kbase/windowstips/windows2000/usertips/miscellaneous/commandinterpreteransisupport.html

& Quot; \ 033 [A & Quot; Строка интерпретируется терминалом как перемещение курсора на одну строку вверх.

 xralf31 мая 2012 г., 10:38
Да, именно так, как у вас.
 xralf31 мая 2012 г., 10:32
Я попробовал ваш код, но строка все еще там (например, когда я ввожу цифру 10), она выглядит следующим образом: & quot; введите число: 0 & quot; & Quot; Готово & Quot; и курсор находится под ним.
 31 мая 2012 г., 11:22
Следующая строка & quot; \ 033 [A & quot; означает поставить курсор на одну строку вверх.
 31 мая 2012 г., 10:35
Достаточно ли места в конце вашей строки? Обратите внимание, что в конце моей строки есть куча пробелов.
 31 мая 2012 г., 10:39
Таким образом, 1 стирается, а 0 нет?

Ваш ответ на вопрос