Python sleep()用逗号禁止打印?

时间:2015-06-11 23:51:58

标签: python python-2.7

如果我想使用带逗号(2.6)的打印,只要你不使用time.sleep()就可以正常工作。

如果你使用逗号打印,然后调用sleep;如果你在一个循环中,字符串永远不会打印。

示例:

a=1
b=10
while a<b:
    print "yes",
    a=a+1

这样做,你会看到是在同一行打印了10次。 但这不起作用。

a=1
b=10
while a<b:
    print "yes",
    time.sleep(1)
    a=a+1

期望是会打印出来;然后有第二个等待,然后将打印下一个是。相反,你会看到10秒后打印出一个10是的字符串。

如果你使用while循环也一样;只要循环正在运行,并且您有一个sleep语句,该字符串将不会打印直到结束。

要使其正常工作,请删除逗号。 如果要指定在每个字符串之间等待多长时间,则无法在同一行上打印字符串。

这是打印功能中的错误吗?

1 个答案:

答案 0 :(得分:4)

print不会自动刷新您的输出。你需要手动完成它。这可以通过使用sys模块的stdout.flush

来完成
import sys,time
a=1
b=10
while a<b:
    print "yes",
    sys.stdout.flush()
    time.sleep(1)
    a=a+1

这是阻止Python使用缓冲的stdio管道的另一种方法(感谢abarnert

使用

中的-u选项执行程序
python -u filename.py

从手册页。

  

-u
  强制stdinstdoutstderr 完全无缓冲

Python3.3的最后一种方法是使用flush函数的flush参数

  

输出是否缓冲通常由文件确定,但如果是   flush关键字参数为true,流被强制刷新。

     

在版本3.3中更改 :添加了{{1}}关键字参数。