4

我想以*1 秒的间隔在命令行上制作 flash。

import time
from sys import stdout

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

我得到的只是一个空行,没有闪烁*

这是为什么?

4

2 回答 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 可以正常工作。

在不使用两个打印语句的情况下,您可以这样做:

import time

i = '*'
while True:
    print('{}\r'.format(i), end='')
    i = ' ' if i=='*' else '*'
    time.sleep(0.5)
于 2016-04-17T09:57:33.317 回答
6

看看这里的讨论: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)
于 2016-04-17T10:07:42.043 回答