将文件数据从 Azure Blob 存储访问到变量

Posted

技术标签:

【中文标题】将文件数据从 Azure Blob 存储访问到变量【英文标题】:Accessing data of a file from Azure blob storage to a variable 【发布时间】:2019-11-13 10:07:32 【问题描述】:

我想从 Azure Blob 存储访问文件的数据到变量。

我正在使用的以下代码将文件数据从 Azure Blob 存储读取到本地文件。我想将它读入一个变量。有可能吗?

from azure.storage.blob import BlockBlobService, PublicAccess

accountName='user123'
accountKey='Pass@12345'
CONTAINER_NAME='development'
blobName='4567/dummyFile.txt'
file_path='C:\\Users\\Sam\\Desktop\\testFile.txt' # local file in which the content from blob will be written


block_blob_service = BlockBlobService(account_name=accountName, account_key=accountKey)

# to access content from azure blob storage to local file
block_blob_service.get_blob_to_path(CONTAINER_NAME,blobName,file_path)

【问题讨论】:

【参考方案1】:

Python SDK for Azure Storage 为此提供了 3 个辅助方法:

    get_blob_to_stream:此方法将下载 blob 并将内容存储在 stream 中。如果要使用stream 类型变量,请使用此方法。 get_blob_to_bytes:此方法将下载 blob 并将内容存储在 byte array 中。如果要使用byte array 类型变量,请使用此方法。 get_blob_to_text:此方法将下载 blob 并将内容存储在 string 中。如果要使用string 类型变量,请使用此方法。请仅当您知道 blob 内容是字符串时才使用此方法。如果 blob 的内容是二进制的(例如图像文件),请使用其他两种方法。

【讨论】:

谢谢,我使用了以下方法,它起作用了 block_blob_service.get_blob_to_bytes(CONTAINER_NAME,blobName).content block_blob_service.get_blob_to_text(CONTAINER_NAME,blobName).content 只是想知道何时使用字节与文本 更新了我的答案。仅当您知道 blob 的内容是文本时,您才需要使用 get_blob_to_text。如果 blob 的内容是二进制的(比如图像),将其存储为文本将使 blob 无法使用。【参考方案2】:

这适用于 azure-storage-blob 包的 12.8.1 版。新版本似乎不支持 BlockBlobService 类。

from azure.storage.blob import BlobServiceClient    # azure-storage-blob 12.8.1

connection_string = " "
local_file_name = "example.txt"
container_name = "example_container"

blob_service_client = BlobServiceClient.from_connection_string(connection_string)
container_client = blob_service_client.get_container_client(container_name)
blob_client = container_client.get_blob_client(local_file_name)
my_blob = blob_client.download_blob().readall() # read blob content as string

print(my_blob)

【讨论】:

以上是关于将文件数据从 Azure Blob 存储访问到变量的主要内容,如果未能解决你的问题,请参考以下文章

是否可以从存储过程访问 Azure Blob?

将最新的文件夹从 azure blob 存储加载到 azure 数据工厂

将文件从远程桌面(RDP)复制到Azure blob存储中

何时使用 Azure Blob 存储与 Azure 文件共享?

使用 SAS 将文件从 Azure Blob 存储下载到浏览器

如何将所有文件从 blob 存储容器导入和处理到 azure databricks