2011-10-27 11 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()メソッド経由でダウンロードされたものが破損しているということである。これは、「JPG壊れた」エラーを報告Qtの()によって、後に表示されます

.retrieveメソッドでは、すべて正常に動作しますが、ダウンロードしているイメージが新たに生成されます。これは、Windowsアプリケーションでファイルを開こうとすると、画像が文字化けします。あなたがリンクを訪れるたびに - それはいいことではありません。

もう少し困惑しているのは、どちらの方法もLinuxの下でうまくいくということですが、ウィンドウの下では、私が言ったように、最初の方法は壊れた画像を与えます。

ヘルプ?

答えて

2

bg_file2操作の場合は、'wb'モードを使用してファイルを開く必要があります。 Unixでは、Pythonはテキストファイルとバイナリファイルを区別しませんが、Windowsでは区別します。プラットフォームの独立性をサポートするには、'wb'モードを使用してイメージをバイナリ形式で書き込みます。私は機械化の内部を知らないのですが、私の推測ではretrieveメソッドも同様です:あなたはそれがライブラリによって抽象化されているので見えません。

詳細については、this section of the Python docsを参照してください。

+0

ありがとうございました - これはうまくいきました。私はWindowsで実際に経験はありません。 –

関連する問題