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

时间:2019-07-02 18:01:51

标签: python-3.x azure azure-devops

我想从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)

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

这适用于 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)