通过python 3进行字节文件转换

时间:2015-10-17 00:03:39

标签: python python-3.x utf-8 decode encode

有没有简单的方法可以将二进制文件的内容作为二进制字符串读取,将其转换为普通(utf-8)字符串,对其进行一些操作,将其转换为二进制字符串并写入把它变成二进制文件?我尝试做一些简单的事情:

a_file = open('image1.png', 'rb')
text = b''
for a_line in a_file:
    text += a_line
a_file.close()
text2 = text.decode('utf-8')
text3 = text2.encode()
a_file = open('image2.png', 'wb')
a_file.write(text3)
a_file.close()

但我得到'Unicode无法解码位置上的字节...'

我做错了什么?

1 个答案:

答案 0 :(得分:0)

utf8格式具有足够的结构,随机排列的字节无效UTF-8。最好的方法是简单地处理从文件中读取的字节(可以使用graphics.SetPixelOffsetMode(Gdiplus::PixelOffsetModeHalf); //Gdiplus::Graphics Gdiplus::Rect shadow(rect.X + rect.Width, rect.Y + cornerRadius, shadowWidth, vSideLength); Gdiplus::LinearGradientBrush brush(shadow, alpha1, alpha2, 180.f); brush.SetBlendBellShape(1); graphics.FillRectangle(&brush, shadow); 一步提取)。二进制字符串(类型text = a_file.read())包含您想要的所有字符串方法,甚至包括bytesisupper()等面向文本的字符串方法。然后是swapcase()bytearray类型的可变副本。

如果出于某种原因,确实希望将您的字节转换为bytes对象,请使用纯{8}编码,例如str。您将获得 unicode 字符串,这就是您真正想要的。 (UTF-8只是Unicode的编码 - 一个非常不同的东西。)