Не может прочитать файл

Пишу Бота для ВК Сообщества на 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:
    #....
→ Ссылка