簡體   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