python`print`在循环中不起作用

Far*_*dix 8 python python-2.7

我在一起有多个循环,在最内循环中有一个睡眠.例如:

from time import sleep

for i in range(10):
    print i,
    for j in range(-5,5):
        if j > 0:
            print '.',
        else:
            print 'D',
        sleep(1)
    print ''
Run Code Online (Sandbox Code Playgroud)

如果您运行代码,您可能希望iD睡眠1秒钟后获得值,D然后再次睡眠直至结束.

但结果是差异,它等待10秒并打印整行0 D D D D D D . . . .并再次等待打印下一行.

我发现打印结束时的逗号导致了这个问题.我该如何解决?

Far*_*dix 14

由于存在逗号,输出缓冲直到a \n.

您应该stdout在每次打印或使用后冲洗sys.stdout.write并冲洗缓冲液.

定义您的打印方法:

import sys

def my_print(text):
    sys.stdout.write(str(text))
    sys.stdout.flush()
Run Code Online (Sandbox Code Playgroud)

并在行尾打印a \n

  • 它对我不起作用,我尝试刷新输出但没有任何反应 (2认同)