当前位置: 首页 > 知识库问答 >
问题:

如何使用Python在Amazon S3上删除文件夹及其内容

龚志文
2023-03-14

出于某种原因,我的回答只给出了空的方括号,即[],什么都没有发生。

这是我的代码:

session = boto3.Session(aws_access_key_id=awsaccesskey,aws_secret_access_key=awssecretkey,region_name='eu-west-1')
s3 = session.resource('s3')
b = s3.Bucket(s3bucket)
r = b.objects.filter(Prefix=s3path).delete()
return(r)

更新:根据John的建议,我尝试创建一个测试桶,但不幸的是,我收到了一个权限拒绝错误。所以我做了以下操作:

  • 在我有权访问的bucket下创建了一个名为“test”的文件夹

这次我确实收到了一个ResponseMetadata对象,而不是空括号。然而,我仍然感到困惑。我的HTTPStatusCode是200。但当它告诉我它删除了什么时,它说:

>

  • '删除':[{'Key':'/test/table_name.dat '}, {'Key':'/test/table_name.txt'}]}]

    我想我不明白这段代码的预期功能。我希望它删除我在桶内作为根文件夹创建的空“测试”文件夹。即桶/test/,但它似乎在我的整个桶中搜索了名为“test”的文件夹并删除了其中的对象??

  • 共有2个答案

    南门新知
    2023-03-14
    import boto3
    s3 = boto3.resource('s3')
    my_bucket = s3.Bucket('mybucket')
    
    for obj in my_bucket.objects.all():
        print(obj)
    
    呼延河
    2023-03-14

    首先是一些指针:永远不要在boto3客户端对象中硬编码访问凭据。

    S3中没有文件夹。相反,键形成一个平面名称空间。然而,名称中带有斜杠的键在某些程序中特别显示,包括AWS控制台(例如,请参见Amazon S3 boto-how to create a folder?)。

    您可以(并且必须)按前缀列出文件并删除,而不是删除“目录”。本质上:

    用于钥匙插入铲斗。list(prefix='your/directory/'):键。删除()

    您可以参考此链接,这里捆绑了一个示例:https://docs.aws.amazon.com/code-samples/latest/catalog/python-s3-delete_object.py.html

    import logging
    import boto3
    from botocore.exceptions import ClientError
    
    def delete_object(bucket_name, object_name):
    """Delete an object from an S3 bucket
    
    :param bucket_name: string
    :param object_name: string
    :return: True if the referenced object was deleted, otherwise False
    """
    
    # Delete the object
    s3 = boto3.client('s3')
    try:
        s3.delete_object(Bucket=bucket_name, Key=object_name)
    except ClientError as e:
        logging.error(e)
        return False
    return True
    
     类似资料:
    • 我使用php删除文件夹包含删除的帖子的图像。我正在使用下面的代码,我在网上找到的,做得很好。 我想知道当文件夹中有其他文件夹时,如何仅删除文件夹中的特定文件夹。 当我使用下面的代码时,如何做到这一点?使用:/dev/images/norman/8-

    • 本文向大家介绍Python彻底删除文件夹及其子文件方式,包括了Python彻底删除文件夹及其子文件方式的使用技巧和注意事项,需要的朋友参考一下 我就废话不多说了,直接上代码吧! 以上这篇Python彻底删除文件夹及其子文件方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

    • 问题内容: 如何在Python中删除本地文件夹的内容? 当前项目适用于Windows,但我也希望看到* nix。 问题答案:

    • 问题内容: 如何在Python中删除文件或文件夹? 问题答案: 删除文件。 删除一个空目录。 删除目录及其所有内容。 模块中的对象还公开了这些实例方法: 删除文件或符号链接。 删除一个空目录。

    • 问题内容: 我需要使用PHP删除包含内容的文件夹。和删除空文件夹,但无法删除包含内容的文件夹。 问题答案: 此功能将允许您删除任何文件夹(只要可写)及其文件和子目录。 或不递归使用:

    • 本文向大家介绍如何使用Python删除隐藏的文件和文件夹?,包括了如何使用Python删除隐藏的文件和文件夹?的使用技巧和注意事项,需要的朋友参考一下 在Unix OS(OSX,Linux等)上,隐藏文件以“。”开头。因此我们可以使用简单的startwith check过滤掉它们。在Windows上,我们需要检查文件属性,然后确定文件/文件夹是否隐藏。 示例 例如,您可以使用以下代码删除所有隐藏文