Как восстановить файл из кодировки base64? - PullRequest
0 голосов
/ 17 февраля 2020

Я пытаюсь закодировать файл с base64, затем отправить закодированные данные и восстановить файл на другом конце. Например, я хочу открыть файл .png, расположенный на моем рабочем столе, закодировать его, затем декодировать и сохранить новый файл .png в другом каталоге.

Меня попросили использовать следующую статью, но я Получите сообщение об ошибке, как показано ниже: https://www.programcreek.com/2013/09/convert-image-to-string-in-python/

import base64

with open('path_to_file', 'rb') as imageFile:
    x = base64.b64encode(imageFile.read())

fh = open('imageToSave.png', 'wb')
fh.write(x.decode('base64'))
fh.close()

File "directory", line 7, in <module>
    fh.write(x.decode('base64'))
LookupError: 'base64' is not a text encoding; use codecs.decode() to handle arbitrary codecs

Я пытался найти похожие проблемы в stackoverflow, но я не понимал другие решения и не смог реализовать их в мое дело. Если есть лучший способ выполнить эту задачу, пожалуйста, дайте мне знать.

1 Ответ

1 голос
/ 17 февраля 2020

Почему вы используете decode вместо base64.b64decode()?

Поскольку это работает нормально:

>>> base64.b64encode(b"foo")
b'Zm9v'
>>> base64.b64decode('Zm9v')
b'foo'

Или, в вашем случае:

import base64

with open('path_to_file', 'rb') as imageFile:
    x = base64.b64encode(imageFile.read())

fh = open('imageToSave.png', 'wb')
fh.write(base64.b64decode(x))
fh.close()

Здесь есть разница между Python 2 и 3. str.decode('base64'), кажется, работает в Python 2, но не в 3.

...