首页 > 解决方案 > 从 URL 中检索文件而不首先将其加载到 RAM 中

问题描述

Python 的urllib.request模块提供了一个urlopen函数,它检索 URL 的内容以及一些元数据并将所有内容存储在主内存中。在内存有限的环境中,这会很快导致MemoryErrors。

还有另一个名为的函数urlretrieve似乎可以满足我的要求。但是,出于某种原因,官方文档提到它将来可能会被弃用

是否有“官方”、内置和非传统方式直接执行下载到本地文件系统?我知道这可以通过第三方库轻松实现,requests但我在严格的计算和内存限制下工作,因此倾向于使用内置解决方案。

标签: pythonpython-3.xurllib

解决方案


如果您想将自己限制在 Python 的标准库中,请注意urlopen返回HTTPResponse对象,这些对象具有将响应逐块读取到内存中的方法。您可以在 RAM 中缓冲响应块,并将其写入磁盘或其他地方。

requests模块使整个事情更加精简


推荐阅读