2011-10-27 55 views
1

我有以下代碼: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() 

的問題是,image.jpg的(經由.read()方法下載的一個已損壞,這將在後面被Qt(所報道的「JPG損壞」錯誤顯示) ,當我嘗試打開文件與Windows應用程序,圖像是亂碼。它打開罰款,但它是亂碼。

通過.retrieve方法,一切工作正常,但我下載的圖像是重新生成每次訪問鏈接 - 這都不行。

更令人費解的是,這兩種方法在linux下都工作得很好,但是在windows下,就像我說的,第一種方法會產生一個損壞的圖像。

幫助?

回答

2

您需要打開使用'wb'模式下的文件爲您bg_file2操作。在Unix下,Python不區分文本和二進制文件,但在Windows上它確實。要支持平臺獨立性,只需使用'wb'模式以二進制格式寫入圖像。我不知道機械化的內部,但我的猜測是retrieve方法也這樣做:你只是沒有看到它,因爲它是由圖書館提取的。

有關詳細信息,請參閱this section of the Python docs

+0

非常感謝 - 這工作。我對Windows不是很有經驗。 –