Ошибка Python3.5 при использовании BytesIO или StringIO с base64.standard_b64encode

#python-3.x #bytesio

#python-3.x #bytesio

Вопрос:

Я пытаюсь взять содержимое объекта BytesIO или StringIO и использовать base64.standard_b64encode() для его кодирования. Я пробовал оба. Это прекрасно работает в python 2.7, однако в python 3.5 я получаю следующую ошибку.

Ошибка типа: не удается преобразовать объект ‘bytes’ в str неявно

Это часть кода, в которой возникла проблема.

 output = BytesIO()
img.save(output,  format="PNG")
output.seek(0)


data = "data:image/png;base64,"   base64.standard_b64encode(output.read())

html = "<html><body><img src='DATA'></body></html>"
 

Я видел ссылки на исправление этой ошибки для строк с использованием b»sting», но я не знаю, как это применимо к чтению из файла.

Спасибо

Ответ №1:

Оказывается, проблема была не в кодировке base64, а скорее в строке, к которой я пытался ее добавить. Я должен был сделать следующее, чтобы python больше не воспринимал это как байтовую кодировку.

 base64.b64encode(output.read()).decode()