Я должен использовать рассол для хранения некоторых данных.Я создал класс для обработки ввода / вывода данных, одна функция отвечает за загрузку данных и распечатывает всю информацию, но когда я вызываю функцию для распечатки данных, она взаимодействует только через первый словарь,Все входные данные сохраняются (так как я открыл файл pickle и смог увидеть некоторые данные, связанные с другими входными данными).
Я проверил некоторые из вопросов stackoverflow, таких как: Перебор словарей с использованием 'for'loops и Лучший способ перебрать несколько словарей в Python , но ни один из примеров не дал ожидаемого результата.
Это класс DataBase, который может обрабатывать pickle:
import pickle
from pathlib import Path
class DataBase:
def __init__(self, out_file):
self.out_file = out_file
def Create(self, file_name):
if not Path(self.out_file).exists():
with open(self.out_file, "w+b") as this_file:
new_file = pickle.dump(file_name, this_file, pickle.HIGHEST_PROTOCOL)
elif Path(self.out_file).exists():
self.Update(file_name)
else:
print("Unknown error!")
def Update(self, file_name):
with open(self.out_file, "a+b") as this_file:
updated_file = pickle.dump(file_name, this_file, pickle.HIGHEST_PROTOCOL)
def Load(self):
with open(self.out_file, "rb") as this_file:
loaded_file = pickle.load(this_file)
return loaded_file
def PrintFile(self):
for k, v in self.Load().items():
print(f"{k} {v}")
Это код, который я написал для тестирования класса:
from DataBase import DataBase as DB
dict0 = {1:'A', 2:'E', 3:'I', 4:'O', 5:'U'}
dict1 = {0:"Water", 1:"Fire", 2:"Air", 3:"Sand"}
db = DB("test")
db.Create(dict0)
db.Create(dict1)
db.PrintFile()
Я ожидал, что результат будет:
1 A
2 E
3 I
4 O
5 U
0 Water
1 Fire
2 Air
3 Sand
Однако выводЯ получаю:
1 A
2 E
3 I
4 O
5 U
Вся информация сохраняется, когда я открываю файл рассола с текстовым эдиотом, я вижу некоторую информацию, хранящуюся там:
��#}�(K�A�K�E�K�I�K�O�K�U�u.��)}�(K�Water�K�Fire�K�Air�K�Sand�u
Мы можем видеть, например, воздух в файле.
Что я могу сделать, чтобы получить ожидаемый результат?