(我相信)下面的代码应该打印一个字符,等待0.4秒,然后打印下一个字符,但是等待1.6秒,然后打印孔字符串。
这是我尝试过的一些代码
import time
def print_slow(str):
for letter in str:
print(letter, end='')
time.sleep(.4)
print_slow("junk")
我期望的是:j ... u ... n ... k
我得到的是:......... junk
答案 0 :(得分:2)
您没有定义打印标准输出的刷新。通过在print命令中不包括flush = True,它将仅将所有字符存储在缓冲区中,直到函数调用解析为止,并且所有这些字符均在单个实例中打印。
import time
def print_slow(str):
for letter in str:
print(letter, end='', flush=True)
time.sleep(.4)
print_slow("junk")
答案 1 :(得分:0)
您需要在每次写入时刷新stdout
。否则,当程序结束时,您的打印内容将被缓冲并立即写入:
import sys
import time
def print_slow(str):
for letter in str:
print(letter, end='')
sys.stdout.flush()
time.sleep(.4)
print_slow("junk")
编辑:
您可以通过使用带有-u
标志:python3 -u <scriptname.py>
的python来运行脚本。
-u:强制stdout和stderr的二进制I / O层不被缓冲; stdin总是被缓冲;文本I / O层将被行缓冲; 也PYTHONUNBUFFERED = x
答案 2 :(得分:0)
答案 3 :(得分:0)
import time, sys
def print_slow(str):
for letter in str:
print(letter, end='')
sys.stdout.flush()
time.sleep(.4)
print_slow("junk")
只需要强制终端显示输出