【问题标题】:S3 Delete files inside a prefix folder using boto3, How to keep the prefixS3 使用boto3删除前缀文件夹内的文件,如何保留前缀
【发布时间】:2021-04-07 14:36:09
【问题描述】:

我尝试使用 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)

【问题讨论】:

    标签: amazon-web-services amazon-s3 boto3


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 很好的解决方案,谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-08
    • 1970-01-01
    • 2023-03-26
    • 2012-05-19
    • 2018-07-21
    • 2012-08-15
    相关资源
    最近更新 更多