Используйте ведение журнала Python для перезаписи предыдущей строки консоли.Python

Программы на Python
Ответить
Anonymous
 Используйте ведение журнала Python для перезаписи предыдущей строки консоли.

Сообщение Anonymous »

Я хочу использовать библиотеку журналирования Python, чтобы перезаписать предыдущую строку консоли. Во время выполнения процесса на консоли должно отображаться ..., а затем перезаписать его с помощью OK после завершения процесса, как показано в этом коде Python.
import time

for i in range(10):
print(f'Progress: {i+1}/10 ...', end='')
time.sleep(1)
print(f'\rProgress: {i+1}/10 OK')

[img]https://i. sstatic.net/rU6RKm7k.png[/img]
Я хочу добиться того же результата, используя библиотеку журналирования, но мое текущее решение кажется слишком многословным и не-pythonic. Есть ли у кого-нибудь лучший подход? Спасибо!
import logging
import sys
import time

class OverwriteStreamHandler(logging.StreamHandler):
def __init__(self, stream, overwrite=False):
super().__init__(stream)
self.overwrite = overwrite

def emit(self, record):
msg = self.format(record)
stream = self.stream
if self.overwrite:
stream.write('\r' + msg)
else:
stream.write(msg)
stream.flush()

def create_logger(name, overwrite=False):
handler = OverwriteStreamHandler(sys.stdout, overwrite=overwrite)
handler.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(message)s')
handler.setFormatter(formatter)
logger = logging.getLogger(name)
logger.setLevel(logging.DEBUG)
logger.addHandler(handler)
return logger

logger1 = create_logger('logger1')
logger2 = create_logger('logger2', overwrite=True)

for i in range(10):
logger1.info(f'Progress: {i+1}/10 ...')
time.sleep(1)
logger2.info(f'Progress: {i+1}/10 Ok\n')


Подробнее здесь: https://stackoverflow.com/questions/792 ... nsole-line
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»