Pickle сохраняет вместо файла непонятные символы. Python

Рейтинг: 0Ответов: 0Опубликовано: 07.02.2023

Целый код представляет собой телеграм бота. Пытаюсь сохранить этот файл, и выдает такую ошибку: введите сюда описание изображения Вот основной элемент кода, который неправильно работает:

users["@servoo"] = 580051506

with open("/Users/sarversalahutdinov/Library/Mobile Documents/com~apple~CloudDocs/my-app/Бот/users.pickle", "wb") as f:
    pickle.dump(users, f)
@bot.message_handler(commands=['start'])
def send_welcome(message):
    bot.send_message(chat_id=message.chat.id, text="Добро пожаловать! Я бот, созданный для написания пожеланий по улучшения нашей школы. \n\nНапиши /help для вызова администрации")
    if message.from_user.id not in users:
        users[f"@{message.from_user.username}"] = message.from_user.id
        with open("/Users/sarversalahutdinov/Library/Mobile Documents/com~apple~CloudDocs/my-app/Бот/users.pickle", "wb") as f:
            pickle.dump(users, f)

В файл сохраняются странные символы, но в консоль все выводится как надо введите сюда описание изображениявведите сюда описание изображения

Upd: Понял, что надо было использовать "w вместо "wb и соответственные способы записи в файл

users = {}

with open("/Users/sarversalahutdinov/Library/Mobile Documents/com~apple~CloudDocs/my-app/Бот/users.pickle", "w", encoding="utf-8") as f:
    f.write(str(users))
    bot.send_message(chat_id=message.chat.id, text="Добро пожаловать! Я бот, созданный для написания пожеланий по улучшения нашей школы. \n\nНапиши /help для вызова администрации")
    if message.from_user.id not in users:
        users[message.from_user.username] = message.from_user.id        
        with open("/Users/sarversalahutdinov/Library/Mobile Documents/com~apple~CloudDocs/my-app/Бот/users.pickle", "w", encoding="utf-8") as f:
            users = f.read()
            users = eval(users)
            print(users)

Но теперь проблема в том, что переменная "users" используется раньше, чем я ее задал, хотя я ее объявил практически в самом начале кода

Ответы

Ответов пока нет.