如何在Python 3中替换打印行

时间:2015-01-07 22:08:51

标签: python

我试图制作一种停止观察的东西,只是为了尝试学习一些不同的东西。

问题是我不知道如何制作它,所以当你打印时间时,它只是取代你当前打印的时间。

例如,如果时间是:

H M S: 0 0 1

我希望它显示

H M S: 0 0 2

无需打印新的线条,所以看起来它只是计数而已。我这样做是通过打印新线来实现的,但它仍然显示出一种运动,这清楚地表明有新的线条被打印出来。

这是我现在的代码,随意运行它,你明白我的意思: http://notepad.cc/woupodi42

如果他们直接适用于这个问题,任何想法都会被更好地理解:)

3 个答案:

答案 0 :(得分:4)

print()的重载会执行此操作。将其与[\r][2]组合以将光标移动到行的开头,然后再写入每个。:

import time
for x in range(10):
    print('\r H M S 0 0 ' + str(x), end='')
    time.sleep(1)

OR

for x in range(10):
    print('\r H M S 0 0 {}'.format(x), end='')
    time.sleep(1)

答案 1 :(得分:1)

提示你,你需要带\r的sys.stdout.write:

import sys, time
>>> for x in range(10):
...     sys.stdout.write('%d\r' % x)
...     sys.stdout.flush()
...     time.sleep(1)
... 

答案 2 :(得分:0)

使用end参数将“ \ r”指定为行结束。

var boolSubject = new Subject<bool>();

//Create a Task that will start running immediately to catch the first element
var myTask = boolSubject.FirstAsync().ToTask(); 

// Send the first bool
boolSubject.OnNext(true);

//wait for the task to complete, or retrieve the result if it did complete already
var b = await myTask; 

Assert.Equal(true, b);