如何从 Azure Blob 存储下载图像并将其存储到本地目录中?

时间:2021-03-28 00:19:27

标签: python azure azure-storage azure-storage-blobs

这里是一般情况。我在名为 dir 的 Azure blob 存储容器中有一个目录。此目录中有多个图像。假设它们是 img1.pngimg2.png 等等。我想从 blob 存储中获取这些图像并将它们存储在名为 localDir 的本地存储库中。

我希望能够以迭代方式执行此操作,其中我遍历 dir 中的每个图像并将其存储在 localDir 中。这样,我可以轻松跳过一些图像。如果我没记错的话,我还需要能够使用最新版本的 azure-storage-blob(即 12.8.0 版)来执行此操作。

假设我有 container_nameconnect_str。这是到目前为止的代码,

from azure.storage.blob import BlobServiceClient, BlobClient, ContainerClient

blob_service_client = BlobServiceClient.from_connection_string(connect_str)
container_client = blob_service_client.get_container_client(container_name)

img_blob_list = container_client.list_blobs(name_starts_with='dir/')

for blob in img_blob_list:
    img_blob_client = container_client.get_blob_client(blob=blob['name'])

使用此代码,我可以获得 Azure img_blob_client blob 中每个图像的 dir。但是,我不明白如何获取此图像并将其复制到本地目录 localDir。我尝试执行以下操作:

for blob in img_blob_list:
    img_blob_client = container_client.get_blob_client(blob=blob['name'])
    with open(f"./localDir/{blob['name']}", "wb") as dst:
        dst.write(img_blob_client.download_blob().readall())

运行此代码后,文件按预期出现在所需的目标文件夹中。但是,它们根本不会打开或呈现。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您可以按照以下代码上传 Blob:

from azure.storage.blob import BlobServiceClient, BlobClient, ContainerClient

blob_service_client = BlobServiceClient.from_connection_string(connect_str)
blob_client = blob_service_client.get_blob_client(container=container_name, blob=upload_blob_name)

# Upload the local file
with open(upload_file_path, "rb") as data:
    blob_client.upload_blob(data)
相关问题