在带有打印函数的for循环中,使用";end";属性的";time.睡眠()&不工作吗? [英] Does "time.sleep()" not work inside a for loop with a print function using the "end" attribute?
本文介绍了在带有打印函数的for循环中,使用";end";属性的";time.睡眠()&不工作吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
所以,我最近刚刚学习了Python,我正在使用一些代码。我想在有一些延迟的循环上打印一些没有换行符的字符。我在for循环中使用了Tim.Sept()函数。但是,它所做的只是一次将输出延迟到它在循环中花费的总时间,然后打印出字符。
我确实在没有"end"属性的情况下尝试了一下,它工作得很好。但是,我不想换行。
from time import sleep
print("starting the progress bar")
for i in range(50):
sleep(0.1)
print("#", end = '')
我期望输出打印一个字符,然后延迟打印另一个字符。但是,脚本会延迟0.1秒50次,然后一次打印出所有字符
推荐答案
因为对Python行进行了缓冲,所以它将在打印标准输出之前等待换行符。
解决方案1:
将PYTHONUNBUFFERED=1添加到您的env.var:
export PYTHONUNBUFFERED=1
这将允许立即转储输出
解决方案2:
因为您使用的是python3,所以可以使用flush=True
for i in range(50):
sleep(0.1)
print("#", end = '', flush=True)
这篇关于在带有打印函数的for循环中,使用";end";属性的";time.睡眠()&不工作吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文