Python二进制文件直接从字符串写入

时间:2017-06-26 22:57:21

标签: python python-3.x file png

我在字符串变量中有png文件的字节码。如何在没有python尝试编码的情况下将其写入.png文件?该字符串是' \ x89PNG \ r \ n \ x1a \ n \ x00 \ x00 \ x00 \ rIHDR \ x00 \ x00 \ x00 \ n \ x00 \ x00 \ x00 \ x07 \ x08 \ x02 \ x00 \ x00 \ X00 \ XBE \ xceK4 \ X00 \ X00 \ X00 \ x01sRGB \ X00 \ XAE \ XCE \ X1C \ xe9 \ X00 \ X00 \ X00 \ x04gAMA \ X00 \ X00 \ XB1 \ X8F \ X0B \ xfca \ X05 \ X00 \ X00 \ X00 \ tpHYs \ X00 \ X00 \ x0e \ XC3 \ X00 \ X00 \ x0e \ XC3 \ X01 \ xc7o \ xa8d \ X00 \ X00 \ x00DIDAT \ x18Wc \ XF8 \ XFF \ XFF \ XFF \ XAF \ XFD \ X07 \ XDF [ :\ xbc \ x95Q \ x81 \ xfb \ xc7 \ xaa \ xb5 @ q \ x00I#\ xcb \ xc1 \ x11D \ x11H \ xfa \ xdb \ x94 \ x19hr \ x10 \ xf4NY \ x1b $ \ x8d \ x0c \ x90 \ X95〜\ XAD \ xacE \ x97F \ X03 \ x94H \ XFF \ XFF \ X0F \ X00 \ X1F] \ XA2 \ x03U | Z \ XA3 \ X00 \ X00 \ X00 \ x00IEND \ xaeB` \ X82'

编辑:我觉得您可能需要更多关于我的情况的信息:我正在尝试制作一些加密程序,虽然它适用于字符串,但我想让它适用于任何文件。我正在以字节模式读取.png文件(它提供上面提到的字符串),在完成加密和解密后,我有一个完全相同内容的字符串,但无法将其放回文件中

2 个答案:

答案 0 :(得分:2)

对于python3,您必须以二进制写入模式打开文件将字符串编码为字节:

with open('filename', 'wb') as f:
    f.write(the_string.encode())

答案 1 :(得分:1)

您可以尝试使用PyPNG,看起来像一个可能的解决方案: http://pythonhosted.org/pypng/ex.html#writing

这将允许您在python中将二进制文件写入文件。

with open('filename', 'wb') as f:
      f.write(bytecode)