我有以下代码:
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()
方法下载的 image.jpg 已损坏。稍后由 Qt 显示(报告“JPG 损坏”错误),并且当我尝试使用 Windows 应用程序打开该文件时,图像出现乱码。打开正常,但出现乱码。
通过 .retrieve
方法,一切正常,但是,每次您访问该链接时,我正在下载的图像都会重新生成 - 所以这不好。
更令人费解的是,这两种方法在 Linux 下都可以正常工作,但是在 Windows 下,正如我所说,第一种方法给出了损坏的图像。
帮忙?
最佳答案
您需要使用'wb'
模式打开文件来执行bg_file2
操作。在 Unix 下,Python 不区分文本文件和二进制文件,但在 Windows 上它会区分。为了支持平台独立性,只需使用'wb'
模式以二进制格式写入图像。我不知道 mechanize 的内部原理,但我的猜测是 retrieve
方法也执行此操作:您只是看不到它,因为它是由库抽象的。
更多详情,请参阅 this section of the Python docs .
关于python - mechanize.Browser() 在 Windows 下下载损坏的 JPG,在 Linux 下工作正常吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7915024/