我想知道是否可以将从读取文件中获得的字节字符串转换为字符串(所以type(output) == str
)。到目前为止我在谷歌上找到的都是这样的答案如何对 PNG 图像进行 Base-64 编码以便在 CSS 文件的 data-uri 中使用? https://stackoverflow.com/q/6375942/1256925,这看起来确实可以在 python 2 中工作(如果我没记错的话,字符串无论如何都是字节字符串),但它在 python 3.4 中不再工作了。
我想要将此生成的字节字符串转换为普通字符串的原因是我想使用此 base64 编码的数据存储在 JSON 对象中,但我不断收到类似于以下内容的错误:
TypeError: b'Zm9v' is not JSON serializable
这是一个简单的例子,说明了错误所在:
import base64
import json
data = b'foo'
myObj = [base64.b64encode(data)]
json_str = json.dumps(myObj)
所以我的问题是:有没有办法转换这个类型的对象bytes
到一个类型的对象str
同时仍然保持base64编码(所以在这个例子中,我希望结果是["Zm9v"]
。这可能吗?
对我有用的是改变b64encode
线路至:
myObj = [base64.b64encode(data).decode('ascii')]
这在中进行了解释https://stackoverflow.com/a/42776711 https://stackoverflow.com/a/42776711 :
Base64 被有意归类为二进制转换......Python 3 中的一个设计决策是强制分离字节和文本并禁止隐式转换。
接受的答案对我不起作用(Python 3.9)并给出错误:
Traceback (most recent call last):
File "/tmp/x.py", line 4, in <module>
myObj = [base64.b64encode(data)]
File "/usr/lib64/python3.9/base64.py", line 58, in b64encode
encoded = binascii.b2a_base64(s, newline=False)
TypeError: a bytes-like object is required, not 'str'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)