python 3.4 base64二进制文件

时间:2015-10-02 12:46:48

标签: python

python 2.7 vs 3.4 我有一个文件0xFFFE0D000A(只是desktop.ini的开头)

import base64
file64 = "c:\\test\\out.b64"
base64.encode(open("c:\\test\\test.ini"),open(file64, "w"))
with open (file64) as f:
    b64 =f.read()
print (b64)

用2.7,输出// 4NAAo =
在3.4上,我收到错误TypeError:' str'不支持缓冲接口 尝试将文件读取为rb并获取TypeError:必须是str,而不是字节。

我试过读它并编码它是utf8,但输出错了。

任何想法?

1 个答案:

答案 0 :(得分:1)

在Python3中,字符串和字节是两种不同且不兼容的数据类型。必须注意使用正确的类型。

Base64数据编码和解码功能处理二进制数据。这就是他们接受二进制文件对象而不是文本文件对象的原因。

正确的代码是:

base64.encode(open(infile, 'rb'), open(outfile, 'wb'))

适用于Python2和3。