根据我的理解,\b
控制字符不应该删除前一个字符(这也是\b
+一个del字符),所以这样的东西有效:
>>> print 'pototo\b\b\ba'
potato
是否存在向前移动的角色,如非覆盖空间?预期的用法类似于(我将此字符称为\x
):
>>> print 'pototo\r\x\x\xa'
potato
显然在打字机上,普通空间可以做到这一点。但是在一个终端上,一个空间会擦掉下面的字母。
我的用例是一种pexpect匹配的场景,我想追溯返回并用颜色装饰字符流输出的某些部分,我想知道是否保留缓存内存中的整个当前行是否必要。
答案 0 :(得分:2)
如果您可以依赖终端(*)中的ANSI escape code sequences,则可以使用光标转发(CUF)序列“CSI n C”,如下所示:
print "Pototo\b\b\ba\x1b[2Ces"
并获得:
Potatoes
CSI是\x1b[
,用于启动ANSI转义码序列。 2
是向右移动的字符数,C
是向右移动的命令。
(*)一个很好的近似是你可以依赖ANSI代码,除非你需要支持Windows。
答案 1 :(得分:0)