如何使用Python列出Azure云存储中特定子目录中的所有blob?

2024-04-16 23:45:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我研究了Azure文档中的示例代码https://docs.microsoft.com/en-us/azure/storage/blobs/storage-quickstart-blobs-python

from azure.storage.blob import BlockBlobService
account_name = "x"
account_key = "x"
top_level_container_name = "top_container"

blob_service = BlockBlobService(account_name, account_key)

print("\nList blobs in the container")
generator = blob_service.list_blobs(top_level_container_name)
for blob in generator:
    print("\t Blob name: " + blob.name)

现在我想知道如何在我的容器行走中获得更精细的颗粒。我的容器顶层容器名有几个子目录

  • 顶层容器名/dir1
  • 顶层容器名称/目录2
  • 以那种模式

我希望能够列出这些目录中的所有blob。例如

  • dir1/a.jpg公司
  • 目录1/b.jpg

怎样才能得到一个只包含dir1内容的生成器,而不必遍历所有其他dir?(我也要一份清单或字典)

我试图将/dir1添加到顶级容器名的名称中,因此它应该是top_level_container_name = "top_container/dir1",但这不起作用。我得到一个错误代码azure.common.AzureHttpError: The requested URI does not represent any resource on the server. ErrorCode: InvalidUri

这些文档似乎甚至没有关于BlockBlobService.list_blobs()https://docs.microsoft.com/en-us/python/api/azure.storage.blob.blockblobservice.blockblobservice?view=azure-python的任何信息

更新: 列表blobs()来自https://github.com/Azure/azure-storage-python/blob/ff51954d1b9d11cd7ecd19143c1c0652ef1239cb/azure-storage-blob/azure/storage/blob/baseblobservice.py#L1202


Tags: namehttpscomcontainertopservicestorageaccount
1条回答
网友
1楼 · 发布于 2024-04-16 23:45:19

请尝试以下操作:

generator = blob_service.list_blobs(top_level_container_name, prefix="dir1/")

这应该列出dir1虚拟目录中的blob和文件夹。

如果要列出dir1虚拟目录中的所有blob,请尝试以下操作:

generator = blob_service.list_blobs(top_level_container_name, prefix="dir1/", delimiter="")

有关详细信息,请参阅^{}

相关问题 更多 >