如何仅提取某些csv并从s3连接数据?

时间:2019-01-25 23:15:38

标签: python-3.x amazon-web-services amazon-s3

我有一个装有各种文件的存储桶。我只想提取以单词“ member”开头的文件,并将每个成员文件存储在列表中,以进一步简化为数据框。

目前,我正在提取这样的数据:

import boto3

my_bucket = s3.Bucket('my-bucket')

obj = s3.Object('my-bucket','member')



file_content = obj.get()['Body'].read().decode('utf-8')
df = pd.read_csv(file_content)

但是,这只是提取成员文件。我有看起来像这样的'member_1229013','member_2321903'等成员文件。

如何读取所有“成员”文件,将数据保存在列表中,以便以后连接。所有列名称在所有csv中都相同

1 个答案:

答案 0 :(得分:1)

每个API调用只能下载/访问一个对象。

我通常建议将对象下载到本地目录,然后以普通的本地文件访问它们。这是有关如何从Amazon S3下载对象的示例:

import boto3

s3 = boto3.client('s3')
s3.download_file('mybucket', 'hello.txt', '/tmp/hello.txt')

请参阅:download_file() documentation

如果要读取多个文件,则首先需要获取文件列表(例如,使用list_objects_v2(),然后分别访问每个对象。

boto3的一个提示...有两种调用方法:通过资源(例如,使用s3.Object()s3.Bucket())或通过客户端将所有内容作为参数传递。