首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用AWS boto3读取boto3文件

使用AWS boto3读取boto3文件
EN

Stack Overflow用户
提问于 2020-04-25 05:50:43
回答 2查看 1.2K关注 0票数 0

我正在尝试使用h5从AWS S3读取boto3文件。

代码语言:javascript
复制
client = boto3.client('s3',key ='key')
result = client.get_object(Bucket='bucket', Key='file')
with h5py.File(result['Body'], 'r') as f:
    data = f

TypeError:预期的str、字节或os.PathLike对象,而不是StreamingBody

有什么想法吗?

h5py版本为2.10,boto3版本为1.7.58

同样的问题是here,但没有答案.

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-25 06:49:05

h5py.File()命令期望磁盘上的本地文件有一个路径。但是,您要将数据传递到内存中。

您可以通过以下方式下载文件:

代码语言:javascript
复制
import boto3

s3_client = boto3.client('s3')

s3_client.download_file('bucket', 'key', 'filename')

with h5py.File('filename', 'r') as f:
    data = f
票数 1
EN

Stack Overflow用户

发布于 2022-04-28 19:30:39

使用tempfile作为临时存储的工作解决方案。这会将模型数据从s3桶中流到临时存储中,并将其设置为变量。

代码语言:javascript
复制
import tempfile
from keras import models
import boto3

# Creating the low level functional client
client = boto3.client(
    's3',
    aws_access_key_id = 'ACCESS_KEY_ID',
    aws_secret_access_key = 'ACCESS_SECRET_KEY',
    region_name = 'us-east-1'
)


# Create the S3 object
response_data = client.get_object(
    Bucket = 'bucket-name',
    Key = 'model/model.h5'
)

model_name='model.h5'
response_data=response_data['Body']
response_data=response_data.read()
#save byte file to temp storage
with tempfile.TemporaryDirectory() as tempdir:
    with open(f"{tempdir}/{model_name}", 'wb') as my_data_file:
        my_data_file.write(response_data)
        #load byte file from temp storage into variable
        gotten_model=models.load_model(f"{tempdir}/{model_name}")
print(gotten_model.summary())
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61421528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档