如链接:http://code.activestate.com/recipes/134892/如何在stdout上实现退格?
答案 0 :(得分:1)
'\b'
是退格的转义序列。
>>> print('123xx\b\b45')
12345
答案 1 :(得分:0)
将每个字符一次写入sys.stdout
应该有效。使用引用的getch()
,您可以看到每次按键时返回的内容:
import sys
from getch import getch
while True:
c = getch()
print '%r' % c
if c == 'q':
break
在我的Linux系统上键入退格键,getch()
实际上返回DEL
个字符'\x7f'
(尚不确定原因)。对于Python,这可以转换为\b
('\x08'
)。
import sys
from getch import getch
translations = string.maketrans('\x7f', '\b')
while True:
c = getch().translate(translations)
sys.stdout.write(c)
if c == 'q':
break
可能使用termios
模块处理字符翻译的方式更为优雅。
此外,如果您希望退格键清除以前输入的字符,则可以将'\x7f'
翻译为'\b \b'
。