如何从 base64 编码重建文件?

How to reconstruct a file from base64 encoding?

我正在尝试使用 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

我尝试在 Whosebug 上寻找类似的问题,但我不了解其他解决方案并且无法在我的案例中实施它们。如果有更好的方法来完成此任务,请告诉我。

为什么使用 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 中无效。