python - 如何通过 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.
我加倍检查了网址是否正确。这可能与没有传递我的订阅密钥或有关存储帐户的任何其他信息有关吗?
任何想法?
解决方案
截至 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}"
推荐阅读
- c++ - How to convert string to integer using stoi()?
- python - 有没有办法从字符串(\u0410)中删除特殊字符?
- c# - HTTP 将 c# 对象发布到 NodeJS api
- microsoft-graph-api - JS图形调用没有返回项目
- android - 使用 HereAPI Android SDK 探索版实现指南针
- javascript - 使用 Firebase 响应构建 json 对象
- c - 我不明白我的代码如何适用于 cs50 现金不太舒服的 pset1,有人可以帮我吗?
- python - 将带有浮点数列表的 pandas 列转换为带有整数列表的列
- c - 符号“RTLD_NEXT”无法解析
- java - Java 猜数字游戏(客户端和服务器)。输入非整数时发生 SocketException 错误