首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用S3从给定列表变量中空boto3桶

使用S3从给定列表变量中空boto3桶
EN

Stack Overflow用户
提问于 2022-03-28 17:46:05
回答 1查看 384关注 0票数 -1

我试图使用boto3来列出我放入列表中的所有桶中有多少个对象,一旦我知道每个桶中的对象的数量,我就想删除其中的所有对象,使所有桶都在0中。

这是我的片段:

代码语言:javascript
复制
    import boto3
    import botocore
    
    client = boto3.client('s3')
    # Using this paginator I can see all of the objects in the bucket
    paginator = client.get_paginator('list_objects_v2')
    
    def s3_list_delete():
        bucket_list = [
            'bucket-1',
            'bucket-2',
            'bucket-3'
        ]
    
    for bucket in bucket_list:
        count = 0
        for page in paginator.paginate(Bucket=bucket):
            count += page['KeyCount']
        print(f'In the S3 Bucket "{bucket}" there are "{count}" number of objects')
    obj_delete=str(input('Want to empty all of the Buckets? Type Y to confirm: '))
    if obj_delete == 'Y':
        for objs in bucket.objects.all():
            objs.delete()
            print('Objects have been deleted')
    else:
        return False


s3_list_delete()

我唯一的输出是每个桶有多少个对象,在按Y之后,什么都没有。

我认为这里的问题是如何迭代我的S3列表中每个桶的对象,比如清空bucket_list的第一个桶中的对象等等……

EN

回答 1

Stack Overflow用户

发布于 2022-03-30 23:54:05

代码语言:javascript
复制
import boto3
s3 = boto3.resource('s3') 


bucket_list = []

def emptyBucket(bucket_list):
    for bucket in bucket_list:
        count = 0
        print(bucket)
        for object in s3.Bucket(bucket):
            print(object.key)
            object.delete()
            count +=1
        print(bucket,'-', count) 
        
        
emptyBucket(bucket_list)

这段代码使"bucket_list“中的所有桶都为空。它打印所有对象的名称和对象的数量。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71651555

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档