如何获取容器中所有级别的所有blob?

时间:2015-12-10 18:05:02

标签: python azure azure-storage-blobs

我找到了关于在容器中列出blob的this主题。

$('.class-name').matchHeight();

但是,这只会列出特定容器中的blob。我如何获得子文件夹中的所有blob?我有几个级别的子文件夹,我想从父容器中获取所有数据文件的名称。

3 个答案:

答案 0 :(得分:2)

我们可以在https://github.com/Azure/azure-storage-python/blob/master/azure/storage/blob/baseblobservice.py#L470看到一个功能list_containers(),其目的是获取存储空间中的所有容器

import azure
from azure.storage.blob import BlobService

blob_service = BlobService(account_name='<account_name>', account_key='<account_key>')
containers = blob_service.list_containers()

for c in containers:
    print(c.name)

然后,您可以使用容器的名称在循环中调用list_blob方法。

此外,如果您在blob名称中定义了多个子文件夹,那么您可以参考SO上的一个帖子list virtual folders in azure blob storage via python API

答案 1 :(得分:0)

您发布的代码无效......

下面是使用Microsoft Azure SDK for Python 3.4 的Python代码,它将列出所有blob名称(带有完整的&#34;子文件夹&#34;路径,例如project1 / images / image1 .png)在特定容器中。

如果您希望获取存储帐户中所有容器中的所有blob名称,只需执行blob_service.list_containers迭代每个容器并列出每次迭代下的所有blob。

这也是一篇关于如何从Python使用Azure Blob存储的有用文章。

How to use Azure Blob storage from Python

希望这有帮助!

from azure.storage.blob import BlobService

blob_service = BlobService(account_name='<storage account name>', account_key='<storage account key>')

blobs = []
marker = None
while True:
    batch = blob_service.list_blobs('<blob container name>', marker=marker)
    blobs.extend(batch)
    if not batch.next_marker:
        break
    marker = batch.next_marker
for blob in blobs:
    print(blob.name)

答案 2 :(得分:0)

在上面批准的解决方案中稍作修改。 新版本中已弃用 BlobService,请改用 BlockBlobService。

import azure
from azure.storage.blob import BlockBlobService

blob_service = BlockBlobService(account_name='<account_name>', account_key='<account_key>')
containers = blob_service.list_containers()

for c in containers:
    print(c.name)