在 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)