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

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

TypeError: невозможно неявно преобразовать объект '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", но я не знаю, как это применимо к чтению из файла.

Спасибо


person Antikythera    schedule 14.10.2016    source источник


Ответы (1)


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

base64.b64encode(output.read()).decode()
person Antikythera    schedule 14.10.2016