Фон: я использую urllib.urlretrieve
, в отличие от любой другой функции в модулях urllib*
, из-за поддержки функции hook (см. ниже reporthook
).., который используется для отображения текстового индикатора выполнения. Это Python >= 2.6.
>>> urllib.urlretrieve(url[, filename[, reporthook[, data]]])
Однако urlretrieve
настолько тупой, что не оставляет возможности обнаружить статус HTTP-запроса (например: было ли оно 404 или 200?).
>>> fn, h = urllib.urlretrieve('http://google.com/foo/bar')
>>> h.items()
[('date', 'Thu, 20 Aug 2009 20:07:40 GMT'),
('expires', '-1'),
('content-type', 'text/html; charset=ISO-8859-1'),
('server', 'gws'),
('cache-control', 'private, max-age=0')]
>>> h.status
''
>>>
Каков наилучший способ загрузить удаленный HTTP файл с поддержкой крючка (чтобы показать индикатор выполнения) и достойную обработку ошибок HTTP?