Python. Проблема с загрузкой словаря из JSON
У меня есть телеграмм бот, данные о пользователях я храню в JSON. У меня есть отдельный файл для выгрузки и загрузки данных.
Вот он:
import json
import logging
all_records, saved_contacts = {}, {}
logger = logging.getLogger(__name__)
async def upload_data(self):
with open("tg_bot/misc/data/all_records.json", "w", encoding="utf-8-sig") as file:
logger.info(f"all_records = {all_records}")
json.dump(all_records, file, indent=4, ensure_ascii=False)
with open("tg_bot/misc/data/saved_contacts.json", "w", encoding="utf-8-sig") as file:
logger.info(f"saved_contacts = {saved_contacts}")
json.dump(saved_contacts, file, indent=4, ensure_ascii=False)
logger.info("Data has been successfully uploaded!")
async def load_data(self):
with open("tg_bot/misc/data/all_records.json", "r", encoding="utf-8-sig") as file:
all_records = json.load(file)
with open("tg_bot/misc/data/saved_contacts.json", encoding="utf-8-sig") as file:
saved_contacts = json.load(file)
logger.info(f"all_records = {all_records}")
logger.info(f"saved_contacts = {saved_contacts}")
logger.info("Data has been successfully loaded!")
load_data()
выполняю при запуске, upload_data()
при отключении телеграмм бота.
executor.start_polling(dp, skip_updates=True, on_startup=load_data, on_shutdown=upload_data)
С выгрузкой проблем нету, а с загрузкой интересная для меня ситуация. Я вывожу два словаря в консоль в функции и в handler. В функции все нормально, вот:
data_handling.py:28 #INFO [2023-04-27 13:41:00,218] - tg_bot.misc.data_handling - all_records = {'1643710214': {'1': {'service': ...
data_handling.py:29 #INFO [2023-04-27 13:41:00,218] - tg_bot.misc.data_handling - saved_contacts = {'1643710214': {'1': {'name': 'lored', 'number': '1654613'}}
}
Но когда прописываю команду /start и опять хочу посмотреть содержимое, то вижу 2 пустых словаря:
filling_form.py:28 #INFO [2023-04-27 13:43:36,301] - tg_bot.handlers.filling_form - all_records = {}
filling_form.py:29 #INFO [2023-04-27 13:43:36,301] - tg_bot.handlers.filling_form - saved_contacts = {}
Словари импортирую из data_handling.py
Помогите, пожалуйста!
Источник: Stack Overflow на русском