使用python递归删除S3 bucket下的文件,而不删除文件夹

使用python递归删除S3 bucket下的文件,而不删除文件夹,python,amazon-web-services,amazon-s3,boto3,Python,Amazon Web Services,Amazon S3,Boto3,当我试图删除特定文件夹下的所有文件时,出现错误 问题在这里['Key':'testpart1/'] 另外,我想删除30天以前的文件,请帮助我的脚本 import boto3 s3 = boto3.resource('s3') my_bucket = s3.Bucket('my-bucket') response = my_bucket.delete_objects( Delete={ 'Objects': [ {

当我试图删除特定文件夹下的所有文件时,出现错误 问题在这里['Key':'testpart1/'] 另外,我想删除30天以前的文件,请帮助我的脚本

import boto3
s3 = boto3.resource('s3')
my_bucket = s3.Bucket('my-bucket')

response = my_bucket.delete_objects(
    Delete={
        'Objects': [
            {
                'Key': 'testpart1/*.*'   # the_name of_your_file
            }
        ]
    }


下面的代码将递归删除前缀下的所有文件:

import boto3
s3 = boto3.resource('s3')
my_bucket = s3.Bucket('my-bucket')

response = my_bucket.objects.filter(Prefix="testpart1/").delete()

请检查以根据日期筛选出对象。

如果要删除我的存储桶下的所有文件?Prefix=“*/”然后
my\u bucket.objects.all().delete()
将起作用,这将删除bucket下的所有文件。如果bucket进行了版本控制,您可以使用
my\u bucket.object\u versions.delete()
我认为bucket中没有“仅文件夹”这样的东西。如果里面有文件,也没有文件夹。对吗?如果在S3控制台中使用“New folder”(新建文件夹)按钮,它将创建一个具有文件夹名称的零长度对象。即使不存在任何对象,也会“强制”显示文件夹。因此,它是一个“模拟文件夹”。但是,一般来说,AmazonS3中并不存在文件夹。
delete\u objects()
命令需要一个要删除的对象列表。它不接受通配符(例如
/*
)。首先需要获取对象列表,然后将这些键(文件名)传递给
delete\u objects()
命令。如果要删除超过30天的对象,可以使用对象列表中的
LastModified
日期来确定是否删除这些对象。仅供参考,Amazon S3可以自动删除S3中超过给定天数的对象。如果您希望定期清除存储桶(或文件夹)中的旧文件,这将非常有用。