我正在使用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的情况下构造它。非常感谢您的帮助!