我希望在1秒的时间间隔内在命令行上使*
闪烁。
import time
from sys import stdout
while True:
stdout.write(' *')
time.sleep(.5)
stdout.write('\r ')
time.sleep(.5)
我得到的只是一个空行,没有闪烁*
。
为什么?
答案 0 :(得分:6)
在这里查看讨论:How to overwrite the previous print to stdout in python?
以下代码适用于Windows 10上的IDLE环境和命令行:
import time
while True:
print('*', end="\r")
time.sleep(.5)
print(' ', end="\r")
time.sleep(.5)
答案 1 :(得分:5)
检查一下。这将以0.5秒的间隔在一行上打印*
,并显示0.5秒(在您调用时闪烁)
import time
while True:
print('*', flush=True, end='\r')
time.sleep(0.5)
print(' ', flush=True, end='\r')
time.sleep(0.5)
请注意,这在IDLE中不起作用,但使用cmd可以正常工作。
不使用两个打印语句,您可以这样做:
import time
i = '*'
while True:
print('{}\r'.format(i), end='')
i = ' ' if i=='*' else '*'
time.sleep(0.5)