Не может прочитать файл
Пишу Бота для ВК Сообщества на Python.
Столкнулся с проблемой.
Когда написал:
f=open(r'Data/Commands.dat', 'r')
commandsList_txt = f.read()
f.close()
Бот должен прочитать файл, в котором находится список команд для пользователя, а потом передать это в сообщении. Вот, что написано в файле:
Команды:
Развлекательные (Синий цвет):
1. "Пикча для вп" (команда выдает рандомно пикчи для вп с колобками)
2. "Поздравить с др" (бот поздравит вас лично)
3. "Какой день лета?"
4. "Игры" (Список игр бота) Не работает!
Служебные (Зелёный цвет):
5. "Заказать рекламу" (бот даст нужные указания, чтобы вы могли заказать рекламу в нашем паблике по низкой цене)
6. "Вежливость: 1" (Включить Вежливость Бота
(по умолчанию: включено))
7. "Вежливость: 0" (Отключить Вежливость Бота
(по умолчанию: отключено))
Административные (Красный цвет):
8. "Вызвать админа" (Админу в лс перешлется ваше сообщение, на которое ответит в ближайшее время. Не спамить!)
ВАЖНО! Список команд будет обновляться. Если есть какие-то предложения, используйте команду 8.
Выдаёт:
Traceback (most recent call last):
File "C:\Users\...\Desktop\ \Папки\VK Bot Dni Leta\Bot.py", line 33, in <module>
commandsList_txt = f.read()
File "F:\python\lib\encodings\cp1251.py", line 23, in decode return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x98 in position 315: character maps to <undefined>
У меня часто бывают ошибки с функцией open()
Ответы (2 шт):
Автор решения: CrazyElf
→ Ссылка
File "F:\python\lib\encodings\cp1251.py", line 23, in decode return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x98 in position 315: character maps to <undefined>
Судя по содержанию ошибки файл пытался прочитаться в кодировке cp1251, что возможно под операционной системой Windows, для которой это родная кодировка. Нужно указать реальную кодировку файла. И лучше открывать файл используя менеджер контекста, чтобы он потом закрылся автоматически:
with open(r'Data/Commands.dat', 'r', encoding='utf-8') as f:
# остальной код, относящийся к чтению файла
Автор решения: Vahe Sargsyan
→ Ссылка
with open(r'Folder/File.dat', 'r', encoding='utf-8') as file:
#....