使用自定义Python代码复制时,图像会损坏

时间:2015-02-24 21:16:06

标签: python fopen

这是代码

def main():
    f = open("image.jpg", "rb")
    filedata = f.read()
    f.close()
    print "Creating Test Image"
    f = open("ftp_test.jpg", "w+")
    f.write(filedata)
    f.close()
    print "Done!"

if __name__ == '__main__':
    main()

我不确定,为什么,但这里是原始图像

enter image description here

这是代码

的结果图片

enter image description here

我不知道该怎么做所以我决定来专家,因为我只有14岁。我也在增加它,比如TCP通讯。所以我可以通过互联网发送文件。

1 个答案:

答案 0 :(得分:1)

您正在使用rb读取二进制文件,因此请使用wb以二进制形式回写。

f = open("ftp_test.jpg", "wb+")

来自官方docs

  

在Windows上,附加到模式的'b'以二进制模式打开文件,所以   还有'rb','wb'和'r + b'等模式。 Windows上的Python   区分文本和二进制文件;行尾   文本文件中的字符会在数据时自动更改   被读或写。这种对文件数据的幕后修改   适用于ASCII文本文件,但它会破坏这样的二进制数据   在JPEG或EXE文件中。 阅读时要非常小心使用二进制模式   并编写这样的文件。在Unix上,附加'b'并没有什么坏处   模式,所以你可以平台独立使用它为所有二进制文件   文件。