VkApi, Python. messages.send. Как отправить сообщение, содержащую информацию из файла .txt?
Имеется следующий код:
f = open('name.txt', 'r', encoding="utf-8")
f_read = f.read()
session.method('messages.send', {
'user_id': 1234567890,
'message': f.read(),
'random_id': 0
})
Проблема в жалобе, которая гласит, что в поле message неправильно задан параметр или оно пустое:
Traceback (most recent call last):
File "C:\Users\Stas\Desktop\python\strbot\1.py", line 13, in <module>
session.method('messages.send', {
File "C:\Users\Stas\Desktop\python\strbot\venv\lib\site-packages\vk_api\vk_api.py", line 668, in method
raise error
vk_api.exceptions.ApiError: [100] One of the parameters specified was missing or invalid: message is empty or invalid
При этом код не воспринимает в том поле ни f.read(), ни переменную f_read, в которой находится функция чтения. Через print() вся информация из файла выводится корректно, проблема лишь в заполнении 'message'.
UPD: ответ на задачу: необходимо поставить виртуальный курсор в файле в начало текста с помощью f.seek(0), после чего передавать данные с помощью переменной f_read
Ответы (1 шт):
open() создает потоковый объект, а значит каждый байт данных вы можете получить из него только один раз. Что значит это для вас? Да то что после использования f.read() при записи переменной вы оставляете f пустым. Об этом же вам и пишет Traceback. Раз вы считали все в переменную то и передавайте ее в session.method(). https://tproger.ru/articles/files-in-python/ - для уверенности, что понимаете, как работать с файлами правильно. Удачи!