代码之家  ›  专栏  ›  技术社区  ›  R overflow

是否可以从Azure Blob存储容器中读取所有文件,并在使用Python读取后删除这些文件?

  •  0
  • R overflow  · 技术社区  · 4 年前

    我想读 全部的 从Azure Blob存储容器中提取文件,并将其保存在我的本地计算机上。将它们保存在本地计算机上后,我想从Blob存储中删除它们。

    我发现 this 堆栈上的解决方案。但是,这只是为了读取一个blob文件(需要指定文件的名称)。

    # The example from stack, to read in 1 file. 
    from azure.storage.blob import BlockBlobService
    
    block_blob_service = BlockBlobService(account_name='myaccount', account_key='mykey')
    block_blob_service.get_blob_to_path('mycontainer', 'myblockblob', 'out-sunset.png')
    
    0 回复  |  直到 4 年前
        1
  •  2
  •   Gaurav Mantri    4 年前

    这实际上相当简单。你只需要列出blob,然后单独下载每个blob。

    类似于:

    from azure.storage.blob import BlockBlobService
    
    block_blob_service = BlockBlobService(account_name='myaccount', account_key='mykey')
    
    #list blobs in container
    blobs = block_blob_service.list_blobs(container_name='mycontainer')
    
    for blob in blobs:
        #download each blob
        block_blob_service.get_blob_to_path(container_name='mycontainer', blob_name=blob.name, file_path=blob.name)
        #delete blob
        #block_blob_service.delete_blob(container_name='mycontainer', blob_name=blob.name)
    

    请注意,上面的代码假设您的blob容器内的虚拟文件夹内没有blob,如果您的blob容器中的虚拟文件夹中有blob,则会失败。您需要先在本地文件系统上创建一个目录。

    推荐文章