在Python Shell上创建一个闪烁的忙碌指示器

4

我希望在命令行中让*以1秒的间隔闪烁。

import time
from sys import stdout

while True:
    stdout.write(' *')
    time.sleep(.5)
    stdout.write('\r  ')
    time.sleep(.5)

我所看到的只有一条空白行,没有闪烁的 *

这是为什么呢?


你的程序在我这里运行良好。问题肯定出在你的环境上。你是在使用IDLE吗? - frankenapps
1
为什么不使用print? - Sнаđошƒаӽ
不,我正在使用KDE终端“Konsole”。 - lo tolmencre
因为print总是打印一个换行符。 - lo tolmencre
2个回答

6

请看这个代码。它会每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中可以正常工作。

不使用两个print语句,您可以这样做:

import time

i = '*'
while True:
    print('{}\r'.format(i), end='')
    i = ' ' if i=='*' else '*'
    time.sleep(0.5)

在Windows上打印重复的*,使用end='\r'对我很有效。 - Maximilian Peters

6

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接