mechanize.Browser()在Windows下下载损坏的JPG,在Linux下工作正常吗?

时间:2011-10-27 11:09:45

标签: python pyqt mechanize

我有以下代码:

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下,就像我说的那样,第一种方法会产生损坏的图像。

帮助?

1 个答案:

答案 0 :(得分:2)

您需要使用'wb'模式为bg_file2操作打开文件。在Unix下,Python不区分文本和二进制文件,但在Windows上它确实如此。要支持平台独立性,只需使用'wb'模式以二进制格式编写图像。我不知道机械化的内部,但我的猜测是retrieve方法也是这样做的:你只是看不到它,因为它是由图书馆抽象的。

有关详细信息,请参阅this section of the Python docs