mechanize.Browser() 在Windows下下载损坏的JPG,在Linux上正常?
我有以下这段代码:
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()
问题是,通过 .read()
方法下载的 image.jpg 文件是坏的。Qt 显示了“JPG 损坏”的错误,当我用 Windows 应用程序打开这个文件时,图片也是模糊的。虽然文件能打开,但内容却看起来不对。
通过 .retrieve
方法,一切都正常,不过我下载的图片每次访问链接时都会重新生成,这样就不太好用了。
更让人困惑的是,这两种方法在 Linux 下都能正常工作,但在 Windows 下,正如我所说,第一种方法下载的图片就是坏的。
谁能帮帮我?
1 个回答
2
你需要用 'wb'
模式来打开文件,这样才能进行 bg_file2
操作。在Unix系统下,Python不区分文本文件和二进制文件,但在Windows系统下是有区别的。为了让你的代码在不同平台上都能正常工作,最好使用 'wb'
模式来以二进制格式写入你的图片。我对mechanize的内部工作原理不太了解,但我猜 retrieve
方法也是这么做的,只是你看不到,因为这个过程被库封装起来了。
想了解更多细节,可以查看 Python文档的这一部分。