如何在 Python 中将 Azure Blob 文件 CSV 转换为 Excel

Posted

技术标签:

【中文标题】如何在 Python 中将 Azure Blob 文件 CSV 转换为 Excel【英文标题】:How to convert Azure Blob file CSV to Excel in Python 【发布时间】:2021-12-26 02:55:51 【问题描述】:

我正在尝试将 azure 存储容器中的 CSV 文件转换为 EXCEL 并将其放在同一个容器中。

我能够使用以下代码从 CSV 文件中读取数据,但无法将其转换为 excel 并将其上传到容器中。

from io import StringIO
from azure.storage.blob import BlobServiceClient, ContainerClient, BlobClient
from typing import Container
import pandas as pd

conn_str = "DefaultEndpointsProtocol=https;AccountName="";AccountKey="";EndpointSuffix="""
container = "testing"
blob_name = "Test.csv"
filename = "test.xlsx"

container_client = ContainerClient.from_connection_string(
conn_str=conn_str, 
container_name=container
)   

downloaded_blob = container_client.download_blob(blob_name)

read_file = pd.read_csv(StringIO(downloaded_blob.content_as_text()) )

print(read_file)

关于如何实现这一点的任何建议?

【问题讨论】:

【参考方案1】:

您可以使用to_excel API 将 pandas 数据框(read_file) 转换为 excel 文件。既然要上传到blob存储,可以先写入内存缓冲区。

import pandas as pd
from io import BytesIO

buffer = BytesIO()

# By setting the 'engine' in the ExcelWriter constructor.
writer = pd.ExcelWriter(buffer, engine="xlsxwriter")
# 'read_file' is your pandas DataFrame
read_file.to_excel(writer, sheet_name="Sheet1") 

# Save the workbook
writer.save()

# Seek to the beginning 
buffer.seek(0)

buffer 现在拥有可以上传到 Blob 存储的数据。所以可以先创建一个blob客户端实例,使用upload_blob方法上传excel文件。如果要覆盖 Azure 中的文件,还可以设置 overwrite=True

excel_blob_client = BlobClient.from_connection_string(
conn_str=conn_str, 
container_name=container,
blob_name = "test.xlsx"
)  
excel_blob_client.upload_blob(buffer, overwrite=True)

参考文献

Writing Excel files to memory upload_blob pandas.DataFrame.to_excel

【讨论】:

以上是关于如何在 Python 中将 Azure Blob 文件 CSV 转换为 Excel的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Azure 逻辑应用中将 blob 文件内容转换为 .docx

在 Azure 存储客户端 2.0 中将一个 Azure blob 复制到另一个 blob

如何在 Python 中生成 Azure blob SAS URL?

从容器中删除 blob 时如何在 python 中对 Azure PartialBatchErrorException 进行异常处理

如何在 Python 中提取 Azure JSON blob 文件内容

如何通过 Python 使用 Azure Blob 存储