我不明白为什么这段代码的第二部分不是以1秒的步长打印一个数字,而是在脚本的末尾(在这种情况下,第二部分开始后3秒)代码)?
#!/usr/bin/python2.7
import time
x = 0
maxi = 999999 #I chose a big number to show them scroll
#this part will print all the number on the same line
while x <= maxi:
print '<{}>\r'.format(x),
x+=1
print
#this part will print the numbers with a sleep of 1 second for each print
x = 999998 #I initialized it at this number to only wait 3 seconds
while x <= maxi:
print '<{}>\r'.format(x),
x+=1
time.sleep(1)
print
答案 0 :(得分:3)
这可能是因为缓冲。
您可以尝试在命令行上使用python -u
运行程序,如手册页所示
-u强制stdin,stdout和stderr完全无缓冲。 [...]
或者您可以使用import sys
并在sys.stdout.flush()
之后加print()
。
如果您想知道为什么第二次打印而不是第一次打印需要,那么很可能是因为sleep
。它会阻止执行,因此不会更新/刷新任何内容。我认为它实际上也发生在第一个,但更新更快/更快,所以你没有注意到它。