我有以下代码:
self.bg_br = mechanize.Browser()
self.bg_br.retrieve(self.bg_imageurl, "image2.jpg")
self.bg_file2 = open("image.jpg", mode="w")
self.bg_image = self.bg_br.open(self.bg_imageurl).read()
self.bg_file2.write(self.bg_image)
self.bg_file2.close()
问题是image.jpg(通过.read()
方法下载的方法已损坏。稍后由Qt显示(报告“JPG已损坏”错误),当我尝试打开使用Windows应用程序的文件,图像是乱码。它打开很好,但它是乱码。
通过.retrieve
方法,一切正常,但是,每次访问链接时,我正在下载的图像都会重新生成 - 所以这没有用。
更令人费解的是,这两种方法在linux下工作得很好,但是在Windows下,就像我说的那样,第一种方法会产生损坏的图像。
帮助?
答案 0 :(得分:2)
您需要使用'wb'
模式为bg_file2
操作打开文件。在Unix下,Python不区分文本和二进制文件,但在Windows上它确实如此。要支持平台独立性,只需使用'wb'
模式以二进制格式编写图像。我不知道机械化的内部,但我的猜测是retrieve
方法也是这样做的:你只是看不到它,因为它是由图书馆抽象的。
有关详细信息,请参阅this section of the Python docs。