Python 2.7回车倒计时

Kva*_*ass 5 python carriage-return sys python-2.7

我在使用回车在python中实现一个简单的倒计时时遇到了麻烦.我有两个版本,每个版本都有问题.

打印版本:

for i in range(10):
    print "\rCountdown: %d" % i
    time.sleep(1)
Run Code Online (Sandbox Code Playgroud)

问题:\r没有做任何事情,因为最后打印了换行符,因此它给出了输出:

Countdown: 0
Countdown: 1
Countdown: 2
Countdown: 3
Countdown: 4
Countdown: 5
Countdown: 6
Countdown: 7
Countdown: 8
Countdown: 9
Run Code Online (Sandbox Code Playgroud)

Sys.stdout.write版本:

for i in range(10):
    sys.stdout.write("\rCountdown: %d" % i)
    time.sleep(1)
print "\n"
Run Code Online (Sandbox Code Playgroud)

问题:所有的睡眠都发生在开始时,睡眠10秒后它就会打印Countdown: 9到屏幕上.我可以看到\r它正在幕后工作,但是如何让印刷品穿插在睡眠中呢?

Bri*_*ian 8

对于解决方案2,您需要刷新标准输出.

for i in range(10):
    sys.stdout.write("\rCountdown: %d" % i)
    sys.stdout.flush()
    time.sleep(1)
print ''
Run Code Online (Sandbox Code Playgroud)

此外,只需打印一个空字符串,因为print将附加换行符.或者使用,print '\n' ,如果您认为它更具可读性,因为尾随逗号会抑制通常会附加的换行符.

不知道如何修复第一个虽然......