【发布时间】:2020-04-24 16:33:58
【问题描述】:
我正在尝试使用以下 python 代码删除 S3 Bucket 中文件夹内的所有文件,但该文件夹也与文件一起被删除
import boto3
s3 = boto3.resource('s3')
old_bucket_name='new-bucket'
old_prefix='data/'
old_bucket = s3.Bucket(old_bucket_name)
old_bucket.objects.filter(Prefix=old_prefix).delete()
【问题讨论】:
-
实际上 S3 中没有“文件夹”,这只是对象在控制台中根据其键(名称)前缀显示的一种方式。如果您在控制台中创建文件夹,它将创建一个带有前缀(路径)名称的空文件。您的代码删除所有对象的键(完整路径)以前缀开头,因此没有任何东西可以表示文件夹
-
如何在不删除我创建的文件夹的情况下删除文件?
-
也许您可以应用另一个过滤器来仅删除密钥长度大于前缀长度的对象(我不是 python 人,不知道该怎么做)。不管文件夹只是一个前缀还是一个空文件(具有特殊的内容类型),所以也许你真的不需要那个
-
您是否特别需要该文件夹存在?
-
@JohnRotenstein 我需要文件夹来组织不同文件夹中的不同文件,而不是创建许多存储桶。
标签: python python-3.x amazon-s3 boto3