Tło: Używam urllib.urlretrieve
, w przeciwieństwie do innych funkcji w modułach urllib*
, ze względu na wsparcie funkcji hak (patrz reporthook
poniżej) .. który jest używany do wyświetlania tekstowych pasek postępu. To jest Python> = 2.6.Jak złapać błąd 404 w urllib.urlretrieve
>>> urllib.urlretrieve(url[, filename[, reporthook[, data]]])
Jednak urlretrieve
jest tak głupi, że nie pozostawia sposób wykryć stan żądania HTTP (np: czy to 404 lub 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
''
>>>
Co jest najbardziej znanym sposobem, aby pobrać plik zdalny HTTP z obsługą haka (aby zobaczyć pasek postępu) i przyzwoitą obsługę błędów HTTP?
Niedostarczenie statusu HTTP na twoje żądanie powinno prawdopodobnie być uznane za błąd w stdlib (ale sprawdź znacznie lepszą bibliotekę, prośby poniżej) –