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

标签 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() 方法下载的 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/

相关文章:

python - 如何解决我的音乐游戏中的这个问题?

Python Mechanize - 如何在单个 .open() 调用上添加 header ?

python - 如何在 Mechanize 测试中允许 JSON 响应?

python - query.next() 慢吗?

python - 从主 PyQt 窗口启动 PyQT 窗口,并获取用户输入?

qt - PyQt4 : QTextEdit start in nth line

python - 如何在 Python ClientForm 对象中搜索 XPath?

python - 数据帧结构操作

python - 如何编写 python 代码来完成从 stdin 的读取,即使读取缓冲区未满

python - Django:没有名为 context_processors 的模块,基本 URL