python-3.x - 在python中逐块从url读取一个大的hdf5文件
问题描述
我在位于以下链接的 Amazon Simple Storage Service 上有一个 1.5 TB 大小的 hdf5 文件。我没有磁盘空间来保存它,也没有内存来读取它。因此,我想按块读取它,处理它,然后丢弃读取的部分。我希望使用 pandas 的 read_hdf 来阅读它,但它不支持 url。h5py 库似乎也没有。虽然它确实提到了一个ros3
驱动程序,但我还不能让它工作。我也尝试了对这个问题的回答,但是 h5py 无法读取这些块,或者我还没有找到方法。所以我对如何处理这个文件一无所知。有谁知道该怎么做?该文件的链接是这样的:
解决方案
尝试这个:
import requests
from contextlib import closing
url = "https://oedi-data-lake.s3-us-west-2.amazonaws.com/building_synthetic_dataset/A_Synthetic_Building_Operation_Dataset.h5"
with closing(requests.get(url, stream=True)) as r:
for row in r:
# Handle each row here...
print(row)
结果,前两行:
b'\x89HDF\r\n\x1a\n\x00\x00\x00\x00\x00\x08\x08\x00\x04\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xa1\x92\x14\x8d.\x01\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00`\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x88\x00\x00\x00\x00\x00\x00\x00\xa8\x02\x00\x00\x00\x00\x00\x00\x01\x00\x01\x00\x01\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x11\x00\x10\x00\x00\x00\x00\x00\x88\x00\x00\x00\x00\x00\x00\x00'
b'\xa8\x02\x00\x00\x00\x00\x00\x00TREE\x00\x00\x01\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x000\x04\x00\x00\x00\x00\x00\x00(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
逐行阅读。没有内存消耗。
推荐阅读
- python - Django:“UtilisateurUpdateView”对象没有属性“对象”
- .net - .Net Core appsettings.json 最佳实践 - 覆盖开发设置(反之亦然)?
- javascript - 从 url 哈希中删除字符
- javascript - Svelte 3,异步 onMount 还是有效的替代方案?
- python - ansible 角色,从命令行调用怪异行为
- react-native - 如何在本机反应中获得当前位置的准确纬度和经度
- sql - 如何将JSON字符串列行转换为可查询表
- tensorflow2.0 - Tensorflow2 Tensorboard 中的未知设备
- node.js - 仅返回数组中两个值之间的值?
- java - Jmeter 和 MongoDB 的问题:检测到未知的 BSON 类型