У меня есть этот класс Logger, который я использую для записи в консоль и в файл. Однако требования изменились, и я хочу вывести файл журнала в другую папку, используя цикл for
import sys
import os
#from pathlib import Path
class Logger(object):
def __init__(self, name, mode="a"):
self.stderr = sys.stderr
self.stdout = sys.stdout
self.log = open(name, mode)
def __del__(self):
sys.stderr = self.stderr
sys.stdout = self.stdout
self.log.close()
def write(self, message):
self.stdout.write(message)
#self.stderr.write(message)
self.log.write(message)
def flush(self):
self.log.flush()
def printing(x):
print(x)
def output_path(path, x):
fname = os.path.join(path, "log_" + str(x) + ".txt")
if os.path.exists(fname): os.remove(fname)
sys.stdout = Logger(fname)
for i in range(3):
path = "../../../test/{}".format(str(i))
if not os.path.exists(path):
os.makedirs(path)
output_path(path, i)
printing(i + "Piece")
Когда я запускаю этот код, создаются 3 файла журнала, однако выходные данные влог файлы не то что я хочу.
Текущий вывод **
Log_0.txt -> 0piece
1piece
2piece
Log_1.txt -> 1piece
2piece
Log_2.txt -> 2piece
Предпочитаемый вывод
Log_0.txt -> 0piece
Log_1.txt -> 1piece
Log_2.txt -> 2piece
Как вы можете видеть, я не очень знаком с поведением Logger, мой вопрос: как это сделать? Я создаю свой файл журнала, пишу в него и закрываю его после каждой итерации (я хочу иметь возможность обобщать это для вложенных циклов)