@Enot_Star

Как хранить объект в json файле?

Есть у нас объект, подобный этому:
spoiler
data = {"functions": [
{"errors": 0, "calls": 0, "on": True, "name": 'общение'},
{"errors": 0, "calls": 0, "on": None, "name": 'sys'},
{"errors": 0, "calls": 0, "on": False, "name": 'реши'},
{"errors": 0, "calls": 0, "on": True, "name": 'вики'},
{"errors": 0, "calls": 0, "on": True, "name": 'кто'},
{"errors": 0, "calls": 0, "on": None, "name": 'помощь'},
{"errors": 0, "calls": 0, "on": True, "name": 'эксплоужин'},
{"errors": 0, "calls": 0, "on": True, "name": 'танцы'},
{"errors": 0, "calls": 0, "on": True, "name": 'инфа'},
{"errors": 0, "calls": 0, "on": True, "name": 'картинки'},
{"errors": 0, "calls": 0, "on": True, "name": 'научный мем'},
{"errors": 0, "calls": 0, "on": True, "name": 'монетка'},
{"errors": 0, "calls": 0, "on": True, "name": 'рандом'},
{"errors": 0, "calls": 0, "on": True, "name": 'кик'},
{"errors": 0, "calls": 0, "on": True, "name": 'эхо-цветок'}

],
'start_time': day() + " " + str(datetime.strftime(datetime.now(), "%H:%M:%S")),
'Version': "Waifu 3.1 (Testing)",
'love_error': 'еуче',
'error_msg': ['Бэ квадрат минус 4 ac'],
'error_p': ['photo-140868589_456242565', 'photo-140868589_457244823', 'photo-140868589_457244824', 'photo-140868589_457244825', 'photo-140868589_457244826', 'photo-140868589_457244827',
            'photo-140868589_457244828', 'photo-140868589_457244829', 'photo-140868589_457244830', 'photo-140868589_457244831', 'photo-140868589_457244832', 'photo-140868589_456239780'],
'error_lazy': '''[FATAL_ERROR:\nin "modules/Bot/Commands/Quest-ans/updates/Waifu/update 2.0.0.1.2.5"\nThe command was not detected, damaged, or not completed\nError_code:\n<Pr0grammer_p!dor>]''',
'testing': False, #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!
'count_msg': 0,
'count_command': 0,
'sys_error': 0,
'peer_count': 0,
'user_count': 0,
'sleep': False,
'exceptions-bots': [0 ],
'FriendBot': 'Опознан братишка',
'chat_error': 'Ты дурак?',
'me_admin_error': 'Error: Not administrator of this chat',
'delay_in_msg': False,
'is_here_error': 'Error: user not found',
'off_error': 'Команда "{0}" отключена по желанию разработчика',
'off': False,
't_error': 'Недоступно в данный момент',
'admins-list': [284185443, 450722348, 166424906, 300905447, 424176604, 492735336],
'chats_for_tests': [2000000113],
'dialog_else': ['Каво?', "Хочешь бан?)", "Бахнуть?", "Хочешь картошки?", "Я самая красивая, остальные лохи", "Оаоаоаоаоаоа"],
'my_id': -140868589,
'phrase': '(Ваше послание первое)',
'AntiBotMsg': 'Сработала защита от ботов'}

Необходимо записать его в json файл и при запуске кода создавать переменную data и работать с ней. И как в процессе выполнения кода сохранять эти изменения?
  • Вопрос задан
  • 807 просмотров
Решения вопроса 1
data.json
{
    "name": "John"
}

index.py
import json
import atexit

class JSONController:
    def __init__(self, filename):
        self.handler = open(filename, 'r+')

        atexit.register(self.close)

    def load(self):
        text = self.handler.read()

        return json.loads(text)
    
    def save(self, data):
        text = json.dumps(data)

        self.handler.seek(0)
        self.handler.write(text)

    def close(self):
        self.handler.close()

json_controller = JSONController('./data.json')
data = json_controller.load()
data['age'] = 30
print(data) # {'name': 'John', 'age': 30}
json_controller.save(data)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы