Contexte: J'utilise urllib.urlretrieve
, par opposition à toute autre fonction dans les urllib*
modules, en raison du soutien de la fonction crochet (voir ci-dessous reporthook
) .. qui est utilisé pour afficher un texte barre de progression. C'est Python> = 2.6.Comment attraper 404 erreur dans urllib.urlretrieve
>>> urllib.urlretrieve(url[, filename[, reporthook[, data]]])
Cependant, urlretrieve
est si bête qu'il ne laisse aucun moyen de détecter l'état de la requête HTTP (par exemple: est-il 404 ou 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
''
>>>
Quelle est la meilleure façon connue de télécharger un fichier HTTP distant avec le support en forme de crochet (pour afficher la barre de progression) et une gestion des erreurs HTTP décent?
Ne pas fournir un statut HTTP sur votre demande devrait probablement être considéré comme un bug dans le fichier stdlib (mais vérifiez la bibliothèque bien meilleure, les requêtes, ci-dessous) –