首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用boto3访问亚马逊网络服务S3数据

如何使用boto3访问亚马逊网络服务S3数据
EN

Stack Overflow用户
提问于 2020-02-23 03:00:02
回答 2查看 288关注 0票数 0

我对S3和boto3都是相当陌生的。我正在尝试以以下格式读入一些数据:

代码语言:javascript
复制
https://blahblah.s3.amazonaws.com/data1.csv
https://blahblah.s3.amazonaws.com/data2.csv
https://blahblah.s3.amazonaws.com/data3.csv

我正在导入boto3,似乎需要执行以下操作:

代码语言:javascript
复制
import boto3
s3 = boto3.client('s3')

但是,如果我想在内存中单独读取所有文件(我不应该在本地下载这些数据),那么在创建这个客户端之后我应该怎么做。理想情况下,我希望将每个CSV数据文件读入到单独的S3 DataFrames中(一旦我知道如何访问Pandas数据,我就知道如何这样做)。

请理解,我对boto3S3都是相当陌生的,所以我甚至不知道从哪里开始。

EN

回答 2

Stack Overflow用户

发布于 2020-02-23 03:05:22

试试这个:

代码语言:javascript
复制
import boto3
s3 = boto3.resource('s3')
obj = s3.Object(<<bucketname>>, <<itemname>>)
body = obj.get()['Body'].read()
票数 2
EN

Stack Overflow用户

发布于 2020-02-23 03:09:31

您将有两个选项,这两个选项您已经提到过:

使用download_file在本地下载文件的

代码语言:javascript
复制
s3.download_file(
    "<bucket-name>", 
    "<key-of-file>", 
    "<local-path-where-file-will-be-downloaded>"
)

请参阅download_file

使用get_object将文件内容加载到内存中的

代码语言:javascript
复制
response = s3.get_object(Bucket="<bucket-name>", Key="<key-of-file>")
contentBody = response.get("Body")
# You need to read the content as it is a Stream
content = contentBody.read()

请参阅get_object

这两种方法都很好,你可以选择哪种更适合你的场景。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60355683

复制
相关文章

相似问题

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