Python控制台输出时刷新当前行内容而不是输出新行
需求目标
执行Python程序的时候在控制台输出内容的时候只显示一行,然后自动刷新内容,像这样:
Downloading File FooFile.txt [47%]
而不是这样:
Downloading File FooFile.txt [47%] Downloading File FooFile.txt [48%] Downloading File FooFile.txt [49%]
实现环境
Python 3.x
import time for i in range(10): time.sleep(0.2) print ("\r Loading... ".format(i)+str(i), end="")
另一种方式
先把代码奉上
import time import sys for i in range(5): print(str(i)*10, end='') sys.stdout.flush()
要想在同一行内输出不同内容,就必须知道如何在同一行内输出时覆盖掉之前存在的字符,要在一行内输出,使用print()
函数的关键字参数end
把行末的换行符替换为空字符,如果不清楚此参数请参考另一篇知文python print的参数详解
python 中的标准输入输出默认是使用行缓冲的。而对于行缓冲来说,缓冲区读取到换行符n
或回车符r
时刷新缓冲区,现在我们解决接着当前行末尾输出的问题,我们只需要使用一个字符:回车符r
。回车符的作用是回到行首,这时我们再输出字符将会覆盖同一行内已存在的字符,这里不能用换行符\n。我们可以使用sys.stdout.flush()
函数在每次迭代时手动刷新缓冲区。