这里是一般情况。我在名为 dir
的 Azure blob 存储容器中有一个目录。此目录中有多个图像。假设它们是 img1.png
、img2.png
等等。我想从 blob 存储中获取这些图像并将它们存储在名为 localDir
的本地存储库中。
我希望能够以迭代方式执行此操作,其中我遍历 dir
中的每个图像并将其存储在 localDir
中。这样,我可以轻松跳过一些图像。如果我没记错的话,我还需要能够使用最新版本的 azure-storage-blob
(即 12.8.0 版)来执行此操作。
假设我有 container_name
和 connect_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())
运行此代码后,文件按预期出现在所需的目标文件夹中。但是,它们根本不会打开或呈现。
任何帮助将不胜感激。
答案 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)