2

Код

fileopen = open('log.txt', mode="wa")
fileopen.write(message.chat.username + ' ' + message.text + '\n')

Пишу бота для Telegram на python 2.7. message - это объект, который может выдавать символы в utf-8 на русском в том числе message.text.username и message.text. Как сделать так, чтобы интерпретатор правильно всё вывел в файл и перенёс там где у меня '\n' на следующую строку в файле

Ошибка

fileopen.write(message.chat.username + ' ' + message.text + '\n')
UnicodeEncodeError: 'ascii' codec can't encode characters in position
8-12: ordinal not in range(128)
Raneddo
  • 33
  • Похоже у вас unicode и байты вперемежку идут. Этого не следует делать. Используйте Unicode для текста. Проверьте типы переменных (type()). Используйте io.open(), явно указав кодировку (encoding), чтобы Unicode в файл писать. – jfs Feb 17 '17 at 18:44
  • Спасибо, попробую изменить, если ничего не выйдет, попрошу помощи – Raneddo Feb 17 '17 at 19:21
  • @jfs у меня почему-то при открытии файла выходит проблема TypeError: 'encoding' is an invalid keyword argument for this function Я добавил туда encoding='utf-8', а mode изменил с 'wa' до 'a', ибо на сколько я понимаю, это одно и тоже – Raneddo Feb 17 '17 at 19:59
  • open != io.open – jfs Feb 18 '17 at 03:07
  • @jfs Я просто бесконечно благодарен. Это было действительно очень важно, и ни на одном форуме я не нашёл, спасибо огромное ещё раз – Raneddo Feb 18 '17 at 08:17
  • Ссылка выше в моём комментарии полный пример кода с io.open содержит. – jfs Feb 18 '17 at 08:50

0 Answers0