在带有打印函数的for循环中,使用"end"属性的"time.睡眠()&不工作吗? [英] Does "time.sleep()" not work inside a for loop with a print function using the "end" attribute?

查看:19
本文介绍了在带有打印函数的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屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆