#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()