pickle.load не читает полностью все данные из файла. как решить проблему?
Всем привет.
Я хочу в условный лог записать данные, а потом из лога получить все записи (и при необходимости отфильтровать их). Код такой у меня:
import pickle
import os
class OwnLogger():
def __init__(self, log_dir="log/"):
self.log_dir = log_dir
if not os.path.exists(self.log_dir):
os.makedirs(self.log_dir)
self.file_name = os.path.join(self.log_dir + "log.pkl")
def log(self, message, level):
# Библиотека pickle позволяет класть и доставать объекты в файл
self.message = message
self.level = level
data = {
'message': self.message,
'level': self.level
}
with open(self.file_name, 'ab') as file:
pickle.dump(data, file)
def show_last(self, level):
with open(self.file_name, 'rb') as file:
sets = pickle.load(file)
# for key, value in sets.items():
# print(key, value)
print(sets)
# return sets
logger = OwnLogger()
logger.log("System started", "info")
logger.show_last("error")
# => None
# Некоторые интерпретаторы Python могут не выводить None, тогда в этой проверке у вас будет пустая строка
logger.log("Connection instable", "warning")
logger.log("Connection lost", "error")
# logger.show_last()
# => Connection lost
# logger.show_last("info")
# => System started
Вызывая метод класса и передавая туда нужный мне текст и уровень ошибки, все ок - файл дописывается новыми строчками. Но когда я вызываю через pickle.load, то вызывается только первая строчка по ходу.
А мне нужно, чтобы вызвались все строчки. Подскажите, как исправить код?
