如何使用python日志记录模块在当前行上打印

时间:2019-05-26 12:49:55

标签: python logging output flush

我正在编写一个具有多个线程的程序,因此为了记录信息,我使用python日志记录模块。但是,我在应用程序的某些部分希望显示在同一行中等待执行的线程有多少,每次重写。我不想在日志中显示多行。

我尝试使用sys.stdout.flush()函数。不幸的是,它不起作用。

我当前的代码:

def log_flush(message, start, stop):
    import logging, sys
    logging.basicConfig(level=logging.DEBUG,
                        format='(%(threadName)-10s) %(message)s',
                        )
    time = stop - start
    logging.debug((str(message) + str(time)))
    sys.stdout.write('\r')
    sys.stdout.flush()

for i in range(0, 5):
    log_flush("Time taken: ", 0, i)

我的预期输出是(执行完成后):

(MainThread) Time taken: 4

当前脚本输出:

(MainThread) Time taken: 0
(MainThread) Time taken: 1
(MainThread) Time taken: 2
(MainThread) Time taken: 3
(MainThread) Time taken: 4

2 个答案:

答案 0 :(得分:0)

我认为您必须清理控制台:))

看到这个问题:

clear console in python

答案 1 :(得分:0)

您可以print个退格键,如下所示:

import time, sys

t = 0
while True:
    print('Seconds passed:', t, end='')
    sys.stdout.flush()
    time.sleep(1)
    t += 1
    print('\b'*20, end='')