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()函数在每次迭代时手动刷新缓冲区。

 

posted @ 2022-04-20 18:11  波罗斯の程序日记  阅读(714)  评论(0编辑  收藏  举报