我想知道是否有可能将我从文件中读取的字节字符串转换为字符串(因此
type(output) == str
)。到目前为止,我在Google上找到的所有答案都像如何对PNG图像进行Base64编码以在CSS文件中使用数据URI? ,这似乎可以在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"]
。这可行吗?
$ docker run --rm -it python:3.6 Python 3.6.12 (default, Nov 18 2020, 14:46:32) [GCC 8.3.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import base64 >>> import json >>> data = b'foo'.decode('UTF-8') >>> myObj = [base64.b64encode(data)] Traceback (most recent call last): File "", line 1, in
File "/usr/local/lib/python3.6/base64.py", line 58, in b64encode
encoded = binascii.b2a_base64(s, newline=False)
TypeError: a bytes-like object is required, not 'str'
- jmou