在 python shell 上制作一个闪烁的忙碌指示灯
Posted
技术标签:
【中文标题】在 python shell 上制作一个闪烁的忙碌指示灯【英文标题】:Make a blinking busy indicator on python shell 【发布时间】:2016-08-09 01:30:24 【问题描述】:我想让*
在命令行上每隔 1 秒闪烁一次。
import time
from sys import stdout
while True:
stdout.write(' *')
time.sleep(.5)
stdout.write('\r ')
time.sleep(.5)
我得到的只是一个空行,没有闪烁的*
。
这是为什么呢?
【问题讨论】:
你的程序适合我。一定是你的环境有问题。你在闲置吗? 为什么不使用打印? 不,我使用的是 KDE 终端“Konsole” 因为 print 总是打印换行符 【参考方案1】:看看这个。这将以 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)
【讨论】:
在 Windows 上打印重复的 *,end='\r' 适合我【参考方案2】:看看这里的讨论: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)
【讨论】:
以上是关于在 python shell 上制作一个闪烁的忙碌指示灯的主要内容,如果未能解决你的问题,请参考以下文章