Найти - Пользователи
Полная версия: Бьется файл при загрузке
Начало » Network » Бьется файл при загрузке
1
nerezus
import cookielib
import urllib2

class UrlRequest(object):
data = ''
cookies = cookielib.CookieJar()
handle = None
opener = None
def __init__(self, proxy='', cookies=None):
if cookies == None:
cookies = self.cookies
cookie_handler = urllib2.HTTPCookieProcessor(cookies)
if proxy:
proxy_handler = urllib2.ProxyHandler({'http': proxy})
opener = urllib2.build_opener(proxy_handler, cookie_handler)
else:
opener = urllib2.build_opener(cookie_handler)
self.cookies = cookies
self.opener = opener

def open(self, url, data=None):
self.handle = self.opener.open(url, data)
self.data = self.handle.read()
return self

def store(filename, data, method="w"):
fh = file(filename, method)
fh.write(data)
fh.close()

image = UrlRequest().open('http://ya.ru/logo.gif').data
store('image.gif', image)
Nbush
nerezus
def store(filename, data, method=“w”):
Скорее всего надо: method=“wb”
nerezus
о_О
А по умолчанию они не бинарные? о_О

Спасибо, заработало.

Как всегдпа проблема в отладке: надо было оба файла сравнить: увидел бы лишние \r
Ferroman
nerezus
В винде - нет, под линуксом вроде как бинарные по-умолчанию.
diam123
Мну для загрузки больших файлов юзает urllib.urlretrieve() - он ведет себя лучше намного, но не катит если необходимо качать и сцылко одноразовая, если сцылко не одноразовая - то можно сделать .geturl() в urllib2 (если ссылку нужно получать с куками) а потом urllib.urlretrieve(url, filename) По умолчанию там вроде бинарные права стоят
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB