[英]Create and upload csv file to azure blob storage using python
[英]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_blob
像BytesIO
这样的字节,但我不能将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.