python的print(flush=True)实现动态loading......效果

本文详细解析了Python中print函数的flush参数作用,通过实例展示了如何使用flush参数实现实时输出,适用于动态Loading效果和在线聊天应用。同时,介绍了flush参数在文件写入中的即时刷新功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python的print(flush=True)实现动态Loading......效果

import time                                                                           
print("Loading",end = "")
for i in range(6):
    print(".",end = '')
    time.sleep(0.2)

想用以上代码实现下面动图效果,即:在Loading同一行后面每0.2秒输出1个点号,总共6个。
可是上面代码效果是;6x0.2秒后1次性输出Loading……
百度了下相关问题,综合网友的回答。问题出在:上面那样循环会堵塞输出,要等sleep全部执行完,才一并打印出全部结果。要在for循环里面的end = ""后面加上flush = True,即:

import time                                                                           
print("Loading",end = "")
for i in range(6):
    print(".",end = '',flush = True)
    time.sleep(0.2)

终于实现了下面效果。(虽然只能动态逐个输出6个点号1次,不是一直循环下去,不过核心问题算是解决了)
在这里插入图片描述
我们查看下help里面写的print

print(...)
    print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
    ...省略...
    flush: whether to forcibly flush the stream.

有个参数flush,默认为False。那么这个参数是干什么用的?并且是怎么用的?
在这里插入图片描述
举个例子:
在线web聊天,页面会实时显示聊天的内容, 其实后台是一直在向服务器请求数据的, 正常情况下是请求完毕之后才会输出相应内容, 但是即时聊天,需要一有响应就得立即返回, flush也就起作用了。

再举个例子
我们知道print也可输出到文件。在python3 交互模式中输入:

f = open("123.txt", "w")
print("123456789", file = f)

运行后打开123.txt文件,发现“123456789”未被写入,文件内容为空。只有f.close()后才将内容写进文件中。如果加入flush = True,即上面代码改为:

f = open("123.txt", "w")
print("123456789",file = f, flush = True)

不用f.close()即可将内容写进文件中
flush参数主要是刷新, 默认flush = False,不刷新,如上面例子,print到f中的内容先存到内存中,当文件对象关闭时才把内容输出到 123.txt 中;而当flush = True时它会立即把内容刷新存到 123.txt 中。

初学python,发文只当作笔记,如果有什么问题欢迎指正

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值