我对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数据文件读入单独的Pandas DataFrames中(一旦我知道如何访问S3数据,我就知道该怎么做(。
请理解,我对boto3
和S3
都很陌生,所以我甚至不知道从哪里开始。
您将有两个选项,这两个选项都已提到:
- 使用
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()
请参阅获取对象(_O(
任何一种方法都可以,你可以选择哪种更适合你的场景。
试试这个:
import boto3
s3 = boto3.resource('s3')
obj = s3.Object(<<bucketname>>, <<itemname>>)
body = obj.get()['Body'].read()