S3使用boto3删除前缀文件夹内的文件,如何保留前缀



我试图用boto3循环从前缀中删除文件,但我发现前缀也被删除了,因为最后一个循环会将前缀作为Key返回。如何保留前缀文件夹?感谢

s3client = boto3.client('s3')
for object in s3client.list_objects_v2(Bucket = 'bucket_filedrop', Prefix = 'key_daily')['Contents']:
file_delete = object['Key']

s3client.delete_object(Bucket = 'bucket_filedrop', Key = file_delete)

如果一个文件夹是由AmazonS3管理控制台中的Create folder函数创建的,那么它会创建一个与该文件夹同名的零长度对象。

因此,您的代码可以这样做:

if object.size > 0:
s3client.delete_object(Bucket = 'bucket_filedrop', Key = file_delete)

仅供参考:请注意,没有必要创建文件夹或前缀。对象可以在任何路径中创建,而无需首先创建目录。当创建对象时,目录将神奇地"出现",然后当从路径中删除所有对象时,这些目录将"消失"。因此,创建或保留文件夹可能没有什么理由。

最新更新