我现在正在上 Python 课,我刚刚了解了退格字符。和换行符 (\n) 一样,退格是一个特殊字符,ASCII 码为 8。我的老师想不出使用它的理由,但我很好奇它是如何使用的。也许只是历史原因?当我尝试时print("Hellow\b World"),我得到了我所期望的:Hello World。
退格字符的原因是什么,如何使用它?
编辑:我知道它不是特定于 python 的,但是在编写原始问题时,我主要考虑的是 Python 并忘记了这个事实。我试图编辑以使其更清楚。
也许首先了解那里发生的事情会有所帮助:
print()正在写入标准输出,它正在写入所有内容,包括w和退格。
现在必须有一些东西来显示它。很可能是终端模拟器。
理论上会发生的情况是w显示然后删除,但它没有被刷新,并且要快到它实际发生。
所以现实生活中的应用程序几乎总是在打印文本的开头使用 \b。
我写了一个简短的例子,它会在进度指示器上有一个小旋转器。示例打印"-"后跟"\b\\"(删除-并替换为\)后跟"\b|"(删除\并替换为|)等等。
这种方式- \ | / - \ | /看起来像一条动画旋转线。
#!/usr/bin/env python3
import time
spinner="\\|/-"
print ("----------\r", end='', flush=True)
for pos in range(10):
print ("-", end='', flush=True)
for spin in range(25):
#here should be a break as soon as some task proceeded further
time.sleep(0.1)
print ("\b" + spinner[spin % 4], end='', flush=True)
print ("\b*", end='', flush=True)
print ()
Run Code Online (Sandbox Code Playgroud)
PS:许多现有程序使用控制字符\b \r \033来显示状态行。最受欢迎的可能是 wget。我也看到过至少一个 python 脚本的这样的输出(虽然我已经不记得是哪一个了)