我有一个装有各种文件的存储桶。我只想提取以单词“ 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中都相同
答案 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()
)或通过客户端将所有内容作为参数传递。