0

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

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)
4

1 回答 1

0

如果文件夹是由 Amazon S3 管理控制台中的创建文件夹功能创建的,则它会创建一个与该文件夹同名的零长度对象。

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

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

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

于 2021-04-07T06:36:09.767 回答