python 从 azure 存储帐户读取

Posted

技术标签:

【中文标题】python 从 azure 存储帐户读取【英文标题】:python read from azure storage account 【发布时间】:2021-10-20 16:19:56 【问题描述】:

很难读取存储在存储容器中的 .csv 文件。我有这些详细信息供容器访问:“Blob SAS 令牌”和“Blob SAS URL”

我一直在提到this、this,但他们不使用“Blob SAS 令牌”或“Blob SAS URL”

有人可以帮助编写一个可以将数据作为数据框读取的 python 代码吗?

【问题讨论】:

您好,如果我的回复对您有所帮助,请将其标记为答案,以便社区知道此问题已关闭。 【参考方案1】:

如果您查看文档HERE,它会显示如何使用 sas url 创建 BlobClient。一旦你有了这个,你可以按照你分享的LINK中的说明进行操作。

您的最终代码将如下所示。

from azure.storage.blob import BlobClient
import pandas as pd
from io import StringIO

sas_url = "<your_blob_sas url>"
blob_client = BlobClient.from_blob_url(sas_url)
blob_data = blob_client.download_blob()
df = pd.read_csv(StringIO(blob_data.content_as_text()))
print(df)

要将数据框上传到容器,可以尝试以下代码

from azure.storage.blob import ContainerClient

sas_url = "https://<acct_name>.blob.core.windows.net/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
container = ContainerClient.from_container_url(sas_url)

output = io.StringIO()
head = ["col1" , "col2" , "col3"]
l = [[1 , 2 , 3],[4,5,6] , [8 , 7 , 9]]
df = pd.DataFrame (l , columns = head)
print(df)
output = df.to_csv (index_label="idx", encoding = "utf-8")

blob_client = container_client.upload_blob(name="myblob", data=output)

【讨论】:

以上对读取数据很有帮助。您还可以帮助我将数据帧上传到带有 blob sas url 的容器吗(我确实拥有所有权限) 您将需要使用 Blobblock 服务。你可以参考this question how to get that ***.com/questions/56961005/…可以参考这个问题/答案***.com/questions/50014827/… 我没有帐户名或密钥,我只有 blob sas url。我不希望下载到本地机器并上传到存储容器 查看我上面修改后的答案。如果这回答了您的问题,请将其标记为答案。

以上是关于python 从 azure 存储帐户读取的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Azure Functions 中的存储容器读取多个文件

如何使用 Python 获取 Azure 的所有存储帐户名称及其访问密钥

从 ASP.NET 应用程序访问 Azure 存储帐户文件共享

存储在 Azure Sentinel 监视的存储帐户中的日志

python将数据帧作为csv写入天蓝色存储帐户

如何使用不同的帐户将存储容器添加到 Azure?