我正在阅读 automate_the_boring_stuff_with_python_2015 ,我得到了这个片段:
print(positionStr, end='')
print('\b' * len(positionStr), end='', flush=True)
其中positionStr是前面定义的字符串。我查看了python转义序列并看到\ b是退格但是出于某种原因,作者说它应该删除打印的字符串
要删除文本,请打印\ b退格转义字符。这个特别的 字符会删除屏幕上当前行末尾的字符。你在u的行使用字符串复制来生成一个包含\ b的字符串 字符作为存储在positionStr中的字符串的长度,其中包含 擦除上次打印的positionStr字符串的效果。
正如你所看到的,我有一堆退格字符,我想我应该有(我运行了一个循环,我打印了所说的字符串,然后是\b
字符串)
现在,这本书是错的,还是我应该做些不同的工作?此外,如果这是错误的,有没有办法实现这一目标? (打印字符串,然后删除它)
从图中可以看出,我使用的是python 3.5.3。在Windows 8.1
答案 0 :(得分:2)
并非所有控制台都支持将\b
字符作为删除字符,尤其是图形字符。
(当你把它写到文件时会发生同样的事情,之前的字符也不会被删除)
在本机shell中尝试您的示例(Windows或Linux可以正常工作),并且将正确删除这些字符。
Windows CMD:
>>> print("a\bc")
c
PyScripter(这就是我所拥有的):
>>> print("a\bc")
a<strange char>c