我对S3和boto3都是相当陌生的。我正在尝试以以下格式读入一些数据:
https://blahblah.s3.amazonaws.com/data1.csv
https://blahblah.s3.amazonaws.com/data2.csv
https://blahblah.s3.amazonaws.com/data3.csv我正在导入boto3,似乎需要执行以下操作:
import boto3
s3 = boto3.client('s3')但是,如果我想在内存中单独读取所有文件(我不应该在本地下载这些数据),那么在创建这个客户端之后我应该怎么做。理想情况下,我希望将每个CSV数据文件读入到单独的S3 DataFrames中(一旦我知道如何访问Pandas数据,我就知道如何这样做)。
请理解,我对boto3和S3都是相当陌生的,所以我甚至不知道从哪里开始。
发布于 2020-02-23 03:05:22
试试这个:
import boto3
s3 = boto3.resource('s3')
obj = s3.Object(<<bucketname>>, <<itemname>>)
body = obj.get()['Body'].read()发布于 2020-02-23 03:09:31
您将有两个选项,这两个选项您已经提到过:
使用download_file在本地下载文件的
s3.download_file(
"<bucket-name>",
"<key-of-file>",
"<local-path-where-file-will-be-downloaded>"
)使用get_object将文件内容加载到内存中的
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
这两种方法都很好,你可以选择哪种更适合你的场景。
https://stackoverflow.com/questions/60355683
复制相似问题