用法:
urllib.request.urlretrieve(url, filename=None, reporthook=None, data=None)
将由 URL 表示的网络对象复制到本地文件。如果 URL 指向本地文件,除非提供文件名,否则不会复制对象。返回一个元组
(filename, headers)
,其中filename
是可以在其中找到对象的本地文件名,而headers
是urlopen()
返回的对象的info()
方法(对于远程对象)。例外情况与urlopen()
相同。第二个参数(如果存在)指定要复制到的文件位置(如果不存在,则该位置将是具有生成名称的临时文件)。第三个参数(如果存在)是可调用的,将在建立网络连接时调用一次,然后在每个块读取之后调用一次。可调用对象将传递三个参数;到目前为止传输的块数,以字节为单位的块大小以及文件的总大小。第三个参数可能是旧 FTP 服务器上的
-1
,它不会返回文件大小以响应检索请求。以下示例说明了最常见的使用场景:
>>> import urllib.request >>> local_filename, headers = urllib.request.urlretrieve('http://python.org/') >>> html = open(local_filename) >>> html.close()
如果
url
使用http:
方案标识符,则可以给出可选的data
参数来指定POST
请求(通常请求类型是GET
)。data
参数必须是标准application/x-www-form-urlencoded
格式的字节对象;请参阅urllib.parse.urlencode()
函数。当
urlretrieve()
检测到可用数据量小于预期量(即Content-Length
标头报告的大小)时,将引发ContentTooShortError
。例如,当下载中断时,可能会发生这种情况。Content-Length
被视为下限:如果要读取的数据更多,则 urlretrieve 会读取更多数据,但如果可用数据更少,则会引发异常。在这种情况下,您仍然可以检索下载的数据,它存储在异常实例的
content
属性中。如果没有提供
Content-Length
标头,则 urlretrieve 无法检查它已下载的数据的大小,而只是将其返回。在这种情况下,您只需假设下载成功。
相关用法
- Python urllib.parse.urlparse用法及代码示例
- Python urllib.parse.urljoin用法及代码示例
- Python urllib.parse.urllib.parse.SplitResult.geturl用法及代码示例
- Python unittest.mock.AsyncMock.assert_awaited_once_with用法及代码示例
- Python unittest.TestCase.assertWarnsRegex用法及代码示例
- Python unittest.mock.Mock.reset_mock用法及代码示例
- Python unittest.mock.Mock.__class__用法及代码示例
- Python unittest.mock.Mock.call_args用法及代码示例
- Python unittest.TestCase.assertRaisesRegex用法及代码示例
- Python unittest.mock.call用法及代码示例
- Python unittest.mock.Mock.method_calls用法及代码示例
- Python unittest.mock.Mock.call_args_list用法及代码示例
- Python unittest.mock.AsyncMock.assert_any_await用法及代码示例
- Python unittest.mock.Mock.assert_called用法及代码示例
- Python unittest.TestCase.assertRaises用法及代码示例
- Python unittest.TestCase.tearDownClass用法及代码示例
- Python unittest.mock.Mock.assert_not_called用法及代码示例
- Python unittest.IsolatedAsyncioTestCase用法及代码示例
- Python unittest.TestCase.setUpClass用法及代码示例
- Python unittest.mock.AsyncMock.await_args_list用法及代码示例
注:本文由纯净天空筛选整理自python.org大神的英文原创作品 urllib.request.urlretrieve。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。