【发布时间】:2010-11-21 11:12:52
【问题描述】:
背景:我正在使用urllib.urlretrieve,而不是urllib* 模块中的任何其他功能,因为挂钩功能支持(参见下面的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 文件的最知名方法是什么?
【问题讨论】:
-
未在您的请求中提供 HTTP 状态可能应该被视为 stdlib 中的错误(但请查看下面更好的库,请求)
-
这太愚蠢了,urlretrieve 不能用返回状态来处理这个