Pickle сохраняет вместо файла непонятные символы. Python
Целый код представляет собой телеграм бота. Пытаюсь сохранить этот файл, и выдает такую ошибку:
Вот основной элемент кода, который неправильно работает:
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" используется раньше, чем я ее задал, хотя я ее объявил практически в самом начале кода
Источник: Stack Overflow на русском