python的print(flush=True)实现动态loading......效果
python的print(flush=True)实现动态Loading......效果
import time print("Loading",end = "") for i in range(6): print(".",end = '') time.sleep(0.2) 1234512345'
想用以上代码实现下面动图效果,即:在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) 12345'
运行
12345终于实现了下面效果。(虽然只能动态逐个输出6个点号1次,不是一直循环下去,不过核心问题算是解决了)
我们查看下help里面写的print
print(...) print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False) ...省略... flush: whether to forcibly flush the stream. 12341234'
有个参数flush,默认为False。那么这个参数是干什么用的?并且是怎么用的?
举个例子:
在线web聊天,页面会实时显示聊天的内容, 其实后台是一直在向服务器请求数据的, 正常情况下是请求完毕之后才会输出相应内容, 但是即时聊天,需要一有响应就得立即返回, flush也就起作用了。
再举个例子:
我们知道print也可输出到文件。在python3 交互模式中输入:
f = open("123.txt", "w") print("123456789", file = f) 1212
运行后打开123.txt文件,发现“123456789”未被写入,文件内容为空。只有f.close()后才将内容写进文件中。如果加入flush = True,即上面代码改为:
f = open("123.txt", "w") print("123456789",file = f, flush = True) 1212
不用f.close()即可将内容写进文件中
flush参数主要是刷新, 默认flush = False,不刷新,如上面例子,print到f中的内容先存到内存中,当文件对象关闭时才把内容输出到 123.txt 中;而当flush = True时它会立即把内容刷新存到 123.txt 中。
初学python,发文只当作笔记,如果有什么问题欢迎指正
网址:python的print(flush=True)实现动态loading......效果 https://www.yuejiaxmz.com/news/view/84469
相关内容
python中的print()语句中的end=''是什么意思Python实现简便算法提升拼音输入法准确率与效率
python if是如何判断true或False的呢? is和== 有什么区别呢?
省时省力,这些Python高效代码片段必须牢记
Python笔记——Python中is和==的区别
Python自学2(列表)
Python 双向队列Deque
Python实现简单算法乘法:提升编程效率与逻辑思维
python鲜为人知的小技巧
Python菜鸟在成长——Python输入与输出