Skip to main content
 首页 » 编程设计

python之如何使用 blockblobservice 的 delete_blob 方法删除 azure 容器内的文件夹(blob)

2025年05月04日12txw1958

delete_blob() 似乎只删除容器内的文件以及容器内的文件夹和子文件夹。但是我在尝试从容器中删除文件夹时在 python 中看到以下错误。

Client-Request-ID=7950669c-2c4a-11e8-88e7-00155dbf7128 Retry policy did not allow for a retry: Server-Timestamp=Tue, 20 Mar 2018 14:25:00 GMT, Server-Request-ID=54d1a5d6-b01e-007b-5e57-c08528000000, HTTP status code=404, Exception=The specified blob does not exist.ErrorCode: BlobNotFoundBlobNotFoundThe specified blob does not exist.RequestId:54d1a5d6-b01e-007b-5e57-c08528000000Time:2018-03-20T14:25:01.2130063Z.

azure.common.AzureMissingResourceHttpError: The specified blob does not exist.ErrorCode: BlobNotFound BlobNotFoundThe specified blob does not exist. RequestId:54d1a5d6-b01e-007b-5e57-c08528000000 Time:2018-03-20T14:25:01.2130063Z

有人可以帮忙吗?

请您参考如下方法:

在 Azure Blob 存储中,不存在这样的文件夹。它只是 blob 名称的前缀。例如,如果您看到一个名为 images 的文件夹,并且其中包含一个名为 myfile.png 的 blob,那么基本上该 blob 的名称是 images/myfile.png。因为文件夹并不真正存在(它们是虚拟的),所以您不能直接删除文件夹。

您需要做的是单独删除该文件夹中的所有 blob(或者换句话说,删除名称以该虚拟文件夹名称/路径开头的 blob。删除所有 blob 后,该文件夹会自动消失。

为了实现这一点,首先您需要获取名称以虚拟文件夹路径开头的所有 blob。为此,您将使用 list_blobs方法并在 prefix 参数中指定虚拟文件夹路径。这将为您提供以该前缀开头的 blob 列表。获得该列表后,您将一个一个地删除 blob。