繁体   English   中英

将缓冲的 csv 从 pandas 直接上传到 azure blob 存储

[英]Upload buffered csv from pandas directly to azure blob storage

我有一个 dataframe 想上传到 azure blob 存储。

我正在使用 azure-storage-blob v12.3.2

from io import BytesIO, StringIO
from azure.storage.blob import BlobServiceClient

service_client = BlobServiceClient.from_connection_string('connection_string')
container_client = service_client.get_container_client('container_name')

output = StringIO()
df.to_csv(output)
container_client.upload_blob(name='output.csv', data=output)

这个片段不起作用,因为upload_blobBytesIO这样的字节,但我不能将BytesIO传递给to_csv因为它需要StringIO

如何将缓冲的 CSV 直接上传到 azure blob 存储中?

- - 编辑 - -

我找到了这个解决方案:

df.to_csv(output)
output.seek(0)
bio = BytesIO(output.read().encode('utf8'))
container_client.upload_blob(name='output.csv', data=bio)

如果有更好的方法,我会接受。

关于这个问题,请参考以下代码

# create data
head = ["col1" , "col2" , "col3"]
value = [[1 , 2 , 3],[4,5,6] , [8 , 7 , 9]]
df = pd.DataFrame (value, columns = head)
output = df.to_csv (index=False, encoding = "utf-8")
print(output)

connection_string=''
# Instantiate a new BlobServiceClient using a connection string
blob_service_client = BlobServiceClient.from_connection_string(connection_string)
# Instantiate a new ContainerClient
container_client = blob_service_client.get_container_client('mycsv')
# Instantiate a new BlobClient
blob_client = container_client.get_blob_client("output.csv")
# upload data
blob_client.upload_blob(output, blob_type="BlockBlob")

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM