python - Python 从 URL 中分块读取文件
问题描述
我需要从 URL 中读取一个非常大的 jsonl 文件,我使用的方法如下
bulk_status_info = _get_bulk_info(shop)
url = bulk_status_info.get('bulk_info').get('url')
file = urllib.request.urlopen(url)
for line in file:
print(json.loads(line.decode("utf-8")))
但是,我的 CPU 和内存是有限的,所以这给我带来了两个问题
- 文件是一次性加载的,还是有一些缓冲机制来防止内存溢出。
- 如果我的任务失败了,我想从失败的地方开始。有没有我可以保存的光标。注意像 seek 或 tell 这样的东西在这里不起作用,因为它不是一个实际的文件
我正在使用 Python3 和 urllib 的一些附加信息
解决方案
该文件将在运行 for 循环之前完整加载。该文件将一个包一个包地加载,但这是由 urllib 抽象出来的。如果您想更近距离地访问,我相信有一种类似于使用 requests 库的方法。
通常,除非服务器特别支持,否则无法恢复网页的下载或任何文件请求。这将要求服务器允许指定起点,视频流协议就是这种情况。
推荐阅读
- url - page.click 不是函数
- python - 无法编组响应:JSONDecodeError
- python - Python AZ translate 请求未授权,因为凭据丢失或无效
- twitter-bootstrap - Bootstrap 4 折叠,在内容之间切换,不关闭所选内容
- q# - 如何从 QDK 全态模拟器返回测量概率?
- html - 为什么我的 html 标签的高度是 8px?
- php - 让它不只返回 1 个值
- html - Flexbox 样式,堆叠两个项目并在其旁边挂一个
- javascript - 数组拼接在这种方法中不起作用是怎么回事?
- netsuite - Netsuite 销售订单状态(网络服务)