如何从Blob下载文件并保存在python的文件夹中

时间:2020-03-17 14:48:45

标签: python azure blob

我正在尝试从python中的Blob下载.pdf文件,但是我不知道如何保存到项目文件夹中的目录中。它一直给我一个错误许可,被拒绝。

代码:

block_blob_service = BlockBlobService(account_name='hi', account_key='hi') 
tenant = 'hi'
container_name = 'files'
id_ = 1
upload_id = 'upload'+'/'+str(id_)

location = 'local'+'/'+tenant+'/'+upload_id+'/'

for c in block_blob_service.list_containers(): 
   if c.name == container_name:
        for blob in block_blob_service.list_blobs(c.name):
            if location in blob.name:
                print(blob.name)
                block_blob_service.get_blob_to_path(c.name,blob.name,'data')

我无法将“文件夹”中的pdf文件保存到文件夹数据中。

1 个答案:

答案 0 :(得分:0)

get_blob_to_path的第三个参数应该是文件路径,而不是目录。 如果“ ./data”是现有目录,则get_blob_to_path会尝试将文件写入目录,以解释“权限被拒绝”错误。 试试这样的东西:

import os
block_blob_service = BlockBlobService(account_name='hi',account_key='hi') 
tenant = 'hi'
container_name = 'files'
id_ = 1
upload_id = 'upload'+'/'+str(id_)
location = 'local'+'/'+tenant+'/'+upload_id+'/'

for c in block_blob_service.list_containers(): 
    if location in blob.name:
        print(blob.name)
        path_to_file = "data/" + blob.name
        dir = os.path.dirname(path_to_file)
        os.makedirs(dir, exist_ok=True)
        # path_to_file should change between loop iterations
        block_blob_service.get_blob_to_path(c.name,blob.name,'data')