【问题标题】:why does list_blobs returns virtual directory as well?为什么 list_blobs 也返回虚拟目录?
【发布时间】:2022-12-18 13:55:31
【问题描述】:

我以为它只返回叶子 blob 文件,之前也是如此,但现在突然间它也返回了虚拟目录,是我有错误的印象还是一夜之间发生了一些变化?

假设我有以下结构

container/dir0/dir1/blob1.json
container/dir0/dir1/blob2.json

和下面的代码

blobs = blob_service_client.list_blobs('container', 'dir0/')
for blob in blobs:
    print(blob.name)

将返回

 dir0/dir1
 dir0/dir1//blob1.json
 dir0/dir1//blob2.json

代替

 dir0/dir1//blob1.json
 dir0/dir1//blob2.json

无论如何不让虚拟目录作为一个 blob 在列表中返回?

【问题讨论】:

    标签: python azure azure-blob-storage


    【解决方案1】:

    从我这边复制后,我可以通过使用 BlockBlobService 类来完成这项工作。

    pip install azure-storage-blob==2.1.0
    

    您可以使用 list_blobs() 或 list_blob_names() 方法列出指定容器内的 blob。以下是对我有用的完整代码。

    from azure.storage.blob import BlockBlobService
    
    ACCOUNT_NAME = "<ACCOUNT_NAME>"
    CONTAINER_NAME = "<CONTAINER_NAME>"
    SAS_TOKEN='<SAS_TOKEN>'
    
    block_blob_service = BlockBlobService(account_name=ACCOUNT_NAME,account_key=None,sas_token=SAS_TOKEN)
    
    print("
    List of blobs in "+CONTAINER_NAME+"
    ")
    generator = block_blob_service.list_blobs(CONTAINER_NAME,'dir0/')
    for blob in generator:
        print(blob.name)
    

    结果:

    【讨论】:

      猜你喜欢
      • 2014-08-17
      • 2010-11-03
      • 2014-09-01
      • 2013-11-09
      • 1970-01-01
      • 2012-03-22
      • 2010-11-28
      • 2020-09-05
      • 1970-01-01
      相关资源
      最近更新 更多