如何将S3存储桶中的所有对象添加到列表中

时间:2020-07-16 19:58:20

标签: python file amazon-s3 jupyter-notebook

我正在使用jupter笔记本中的python。我试图从aws s3存储桶访问文件,并使用s3.resource将对象添加到列表中。

我有一些代码相信可以在s3.client上使用,但是我需要在没有客户端的情况下进行操作。应该起作用的代码是:

bucket = s3_resource.Bucket(name='mybucket')

all_objects = s3_client.list_objects(Bucket = 'mybucket', Prefix = 'Files.parquet')
print(type(all_objects))
filenames = []
for obj in all_objects['Contents']:
    filenames.append(obj['Key'].split('/')[-1])
for file in filenames:
    bucket.download_file('Files.parquet/' + file, file)

我尝试过的是:

files = []
for obj in bucket.objects.all():
    key = obj.key
    body = obj.get()['Body'].read()
    print(obj)
    files.append(obj)

本质上,我希望“文件”与“ all_objects”相同,但是当我这样做时:

for obj in files['Contents']:
        filenames.append(obj['Key'].split('/')[-1])

它说:

TypeError: list indices must be integers or slices, not str

因此,我认为我没有正确构建“文件”列表。看起来all_objects是一本字典,而且我不知道如何在不使用list_objects的情况下构造它。非常感谢您的帮助!

0 个答案:

没有答案