如何在Python中对二进制文件进行Base64编码/解码?

8
我试图使用以下简单的python代码对同一图片文件进行编码和解码。但是每次输出文件都比输入文件大,并且无法打开。这段代码有什么问题?
import base64

with open("img.jpeg", "rb") as image_file:
    encoded_string = base64.b64encode(image_file.read())

    decoded_string = base64.b64decode(encoded_string)
    with open("test_img.jpeg", "w") as image_file2:
        image_file2.write(decoded_string);

原始文件:https://filebin.ca/3j6aIDlWEYdV/img.jpeg
结果文件:https://filebin.ca/3j6arBo85Lcg/test_img.jpeg


1
在本地运行此代码会生成一个与输入文件完全相同的输出文件。你确定你正在运行这段代码吗? - Mureinik
是的,我只是复制粘贴了我的代码,并且测试了多次。我的Python版本是2.7.13。这可能是问题所在吗? - Sameera K
我也在运行2.7.13 - Mureinik
1
发现了问题,问题是在写文件时应该使用“wb”。如果我改回只用“w”,那么文件就无法读取,如果我改回“wb”,那么它又可以正常工作了。 - Sameera K
1个回答

6
尝试将写入模式更改为"wb"。目前您正在以不同的格式进行写入和读取。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接