今天程序没有在同行刷新的原因是忘加end=" "了
需要实现的功能类似单行歌词刷新,或者文本进度条类似的功能。如果要实现这个问题,首先需要明白这么几个问题,文本为什么换行,以及文本回到行首。
文本为什么会换行
因为print函数默认会为字符串添加换行符’\n’,如果不想让文本换行,可以利用print函数的end参数对字符串末尾添加的字符进行限制,比如
import time
for i in range(100):
time.sleep(0.5)
print("The program has processed {:2}%".format(i+1),end="")
这段代码的执行结果是在同一行打印了100次文本,那么如何让每次打印的时候光标回到行首呢
文本光标回到行首
这个需要用到之前在字符串中介绍过的一个转义符“\r”,这个转义符的功能是光标回到行首。这样,每一行打印时都会把之前的打印删掉,重新从行首开始打印。比如:
import time
for i in range(100):
time.sleep(0.5)
print("\r The program has processed {:2}%".format(i+1),end="")
为什么在idle中没有这样的效果呢?
可能有人会在idle中写上述代码执行,发现就算加了\r之后,仍然是在同一行进行打印,并没有像期望的那样,在同一行刷新,这是为什么呢?
因为IDLE作为调试命令行,默认是会打开debug开关,这样,所有的打印都会保留下来,而不会被后来的打印冲掉,我们可以把代码保存问文件进行测试。