Как напечатать текущую строку, используя модуль регистрации Python - PullRequest
0 голосов
/ 26 мая 2019

Я пишу программу с несколькими потоками, поэтому для регистрации информации я использую модуль регистрации 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 голосов
/ 26 мая 2019

Вы можете 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='')
0 голосов
/ 26 мая 2019

Я думаю, что вы должны почистить консоль:))

см. Этот вопрос:

очистить консоль в python

...