删除Python中的最后一个输入行

时间:2012-05-31 08:05:55

标签: python input console

我有以下代码:

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

控制台输出类似于

input number: 10

我想在用户按下input number: 10后删除文字ENTER。退格键\b无法执行此操作。

4 个答案:

答案 0 :(得分:6)

这适用于大多数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

“\ 033 [字符串由终端解释为将光标移动一行。

答案 1 :(得分:1)

有用于移动光标的“单词后退”和“后退”等控制序列。因此,您可以尝试将光标移回要删除的文本的开头,并用空格覆盖它。但这很快就变得复杂了。值得庆幸的是,Python具有用于“高级终端处理”的标准curses module

唯一的问题是它目前不是跨平台的 - 该模块从未被移植到Windows。因此,如果您需要支持Windows,请查看Console module

答案 2 :(得分:0)

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 , "]"

答案 3 :(得分:-2)

您可以使用os模块

import os
os.system('clear')

“cls”和“clear”是清除终端的命令(即DOS提示符或终端窗口)。

对于IDLE:你能做的最好的事情就是将屏幕向下滚动很多行,例如:

print "\n" * 100