python 文本单行刷新

需要实现的功能类似单行歌词刷新,或者文本进度条类似的功能。如果要实现这个问题,首先需要明白这么几个问题,文本为什么换行,以及文本回到行首。

文本为什么会换行

因为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开关,这样,所有的打印都会保留下来,而不会被后来的打印冲掉,我们可以把代码保存问文件进行测试。

猜你喜欢

转载自blog.csdn.net/u013894427/article/details/80305435