Printing on the same line with time.sleep()
我试图用中间的计时器在同一行上打印两个字符串。代码如下:
1 2 3 4 5 | import time print"hello", time.sleep(2) print"world" |
但程序似乎等待两秒钟,然后打印两个字符串。
问题是,默认情况下,控制台输出是缓冲的。由于python 3.3
1 | print('hello', flush=True) |
如果使用的是以前版本的python,则可以强制执行如下刷新:
1 2 | import sys sys.stdout.flush() |
号
在python 2.7中,您可以使用将来包中的print_函数
1 2 3 4 5 6 | from __future__ import print_function from time import sleep print("hello,", end="") sleep(2) print("world!") |
但正如您所说,这将等待2秒钟,然后打印两个字符串。根据gui rava的回答,您可以清除stdout,下面是一个示例,它可以让您找到正确的方向:
1 2 3 4 5 6 7 8 9 10 | import time import sys def _print(string): sys.stdout.write(string) sys.stdout.flush() _print('hello ') time.sleep(2) _print('world') |
。