Мне нужно сохранить в файл те же журналы, что и в консоли, поэтому я редактирую sys.stdout. (Использование кода от Redirect stdout to a file in Python?)Python: Редактирование текста на персональном stdout - удвоенный текст
Но проблема показывает, когда я пытался редактировать текст в функции записи, добавляя что-то перед ним. В результате этот «[stack]» добавляет до и после текстовой переменной.
import sys
class Logger(object):
def __init__(self):
self.terminal = sys.stdout
self.file = open("log.txt", "a")
def flush(self):
self.terminal.flush()
self.file.flush()
def write(self, text):
self.terminal.write("[stack]" + text)
self.file.write(text)
self.flush();
sys.stdout = Logger()
print "Test log"
print "Another test log"
Результат:
[stack]Test log[stack]
[stack]Another test log[stack]
'print 'Журнал испытаний' 'выполняется как' write ("Test log") 'и' write ("\ n") '- поэтому вы получаете' write ("[stack]" + "Test log") 'и' write ("[stack]" + "\ n") '. Попробуйте с запятой 'print" Test "," log "' и вы получите еще больше '[stack]' - '[stack] Test [stack] [stack] log [stack]' :) – furas