在 python shell 上制作一个闪烁的忙碌指示灯
Make a blinking busy indicator on python shell
我想让 *
以 1 秒的间隔在命令行上闪烁。
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)
我想让 *
以 1 秒的间隔在命令行上闪烁。
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)