在 Python 3 上将文件转换为 base64 字符串

新手上路,请多包涵

我需要将图像(或任何文件)转换为 base64 字符串。我使用不同的方式,但结果总是 byte ,而不是字符串。例子:

 import base64

file = open('test.png', 'rb')
file_content = file.read()

base64_one = base64.encodestring(file_content)
base64_two = base64.b64encode(file_content)

print(type(base64_one))
print(type(base64_two))

回来

<class 'bytes'>
<class 'bytes'>

我如何获得一个字符串,而不是字节?蟒蛇 3.4.2。

原文由 Vladimir37 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.5k
2 个回答

Base64 是一种 ascii 编码,所以你可以用 ascii 解码

>>> import base64
>>> example = b'\x01'*10
>>> example
b'\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01'
>>> result = base64.b64encode(example).decode('ascii')
>>> print(repr(result))
'AQEBAQEBAQEBAQ=='

原文由 tdelaney 发布,翻译遵循 CC BY-SA 3.0 许可协议

我需要在文件中写入 base64 文本…

因此,不要再担心字符串,而只是这样做。

 with open('output.b64', 'wb'):
  write(base64_one)

原文由 Ignacio Vazquez-Abrams 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题