mechanize.Browser () загружает поврежденный JPG под Windows, отлично работает в Linux? - PullRequest
1 голос
/ 27 октября 2011

У меня есть следующий код:

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, как я уже сказал,Первый метод дает поврежденное изображение.

Помощь?

1 Ответ

2 голосов
/ 27 октября 2011

Вам необходимо открыть файл в режиме 'wb' для операции bg_file2.В Unix Python не делает различий между текстовыми и двоичными файлами, но в Windows это делает.Чтобы поддерживать независимость от платформы, просто используйте режим 'wb', чтобы записать изображение в двоичном формате.Я не знаю, что такое механизм механизации, но я предполагаю, что метод retrieve также делает это: вы просто не видите его, поскольку он абстрагируется библиотекой.смотрите этот раздел документации по Python .

...