从Azure Blob存储下载文件的替代方法

b5buobof  于 2022-12-30  发布在  其他
关注(0)|答案(1)|浏览(179)

我正在尝试从Azure Blob存储中下载文件,我希望在不使用任何文件处理程序或打开或关闭方法的情况下下载它。
这是我的方法,我希望有一种不使用“with open()”的替代方法
'

def download_to_blob_storage(CONTAINERNAME ,remote_path,local_file_path):
    client = BlobServiceClient(STORAGEACCOUNTURL, credential=default_credential)
    blob_client = client.get_blob_client(container =CONTAINERNAME,blob = remote_path)

    with open(local_file_path, "wb") as my_blob:
       download_stream = blob_client.download_blob()
       my_blob.write(download_stream.readall()) 
    print('downloaded'+remote_path+'file')

download_to_blob_storage(CONTAINERNAME , '/results/wordcount.py',"./wordcount.py")

'

bfnvny8b

bfnvny8b1#

对于这个问题,首先确定你想做什么。
你想实现的"下载"是一个什么样的概念,如果你只是想得到文件内容,我可以给你提供一个方法,但是如果你想避开python的I/O机制来实现创建和写入文件,**那么这是不可能的,**file的open方法是python原生的最基本的方法,如果你想要一个可以存储在磁盘上的文件,您将不可避免地调用此方法。
为您提供一个python演示:

from azure.storage.blob import BlobClient, ContainerClient

account_url = "https://xxx.blob.core.windows.net"
key = "xxx"
container_name = "test"
blob_name = "test.txt"
# Create the ContainerClient object
container_client = ContainerClient(account_url, container_name, credential=key)

# Create the BlobClient object
blob_client = BlobClient(account_url, container_name, blob_name, credential=key)

#download the file without using open
file_data = blob_client.download_blob().readall()

print("file content is: " + str(file_data))

结果:

相关问题