首页 > 解决方案 > 如何通过 Python 中的 URL 下载 Azure Blob 存储文件?

问题描述

我正在尝试从我的存储帐户下载 Azure Blob 存储文件,为此,我检查了 URL 是什么,并且正在执行以下操作:

with urllib.request.urlopen("<url_file>") as resp:
    img = np.asarray(bytearray(resp.read()), dtype="uint8")

但我收到以下错误:

urllib.error.HTTPError: HTTP Error 404: The specified resource does not exist.

我加倍检查了网址是否正确。这可能与没有传递我的订阅密钥或有关存储帐户的任何其他信息有关吗?

任何想法?

标签: pythonazureblob

解决方案


截至 2019 年 12 月 26 日,我无法从 Azure 云存储导入 BaseBlobService。BlobPermissions 和 generate_blob_shared_access_signature 都不适合我。以下是我使用的东西,它适用于我的情况,希望对您有所帮助

from azure.storage.blob import generate_blob_sas, AccountSasPermissions

def scan_product():

    account_name=<account_name>
    container_name=<container_name>
    blob_name=<blob_name>
    account_key=<account_key>
    url = f"https://{account_name}.blob.core.windows.net/{container_name}/{blob_name}"
    sas_token = generate_blob_sas(
        account_name=account_name,
        account_key=account_key,
        container_name=container_name,
        blob_name=blob_name,
        permission=AccountSasPermissions(read=True),
        expiry=datetime.utcnow() + timedelta(hours=1)
    )

    url_with_sas = f"{url}?{sas_token}"

推荐阅读