问题描述
这将删除s3存储桶中的所有对象
s3_b=boto3.client("s3")
objects=s3_b.list_objects(Bucket="bucket_name")["Contents"]
for obj in objects:
s3_b.delete_object(Bucket='bucket_name',Key=obj["Key"])
是否有类似的方法来删除具有特定键路径(如s3://bucket_name/folder1/folder2/folder3/folder4
)的对象,我想删除文件夹4中的所有对象
编辑:
是否可以删除同一循环内两个不同路径中的对象
例如:'folder1/folder2/folder3/folder4'
和'folder1/folder2/folder3/folder5'
解决方法
您可以使用.delete_objects
并将对象列表作为参数传递:
https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html#S3.Client.delete_objects
您可以使用filter。例如:
import boto3
s3r = boto3.resource('s3')
bucket = s3r.Bucket('bucket_name')
for object in bucket.objects.filter(Prefix='folder1/folder2/folder3/folder4'):
print(object)
#object.delete() # uncomment to delete