如果我想使用带逗号(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语句,该字符串将不会打印直到结束。
要使其正常工作,请删除逗号。 如果要指定在每个字符串之间等待多长时间,则无法在同一行上打印字符串。
这是打印功能中的错误吗?
答案 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
强制stdin
,stdout
和stderr
完全无缓冲 。
Python3.3的最后一种方法是使用flush
函数的flush
参数
输出是否缓冲通常由文件确定,但如果是
flush
关键字参数为true,流被强制刷新。在版本3.3中更改 :添加了{{1}}关键字参数。