我想以*
1 秒的间隔在命令行上制作 flash。
import time
from sys import stdout
while True:
stdout.write(' *')
time.sleep(.5)
stdout.write('\r ')
time.sleep(.5)
我得到的只是一个空行,没有闪烁*
。
这是为什么?
我想以*
1 秒的间隔在命令行上制作 flash。
import time
from sys import stdout
while True:
stdout.write(' *')
time.sleep(.5)
stdout.write('\r ')
time.sleep(.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)
看看这里的讨论: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)