You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将DataFrame以CSV格式上传到仅提供blob_sas_url的Azure存储容器

问题解决方法

错误原因

  • open() 函数仅支持传入本地文件路径、字节或类路径对象,你传入的region是pandas DataFrame对象,不符合参数要求,直接触发类型错误
  • 原代码存在变量混用问题:你创建的是blob_client对象,但后续调用了未定义的container_client,也会导致后续运行报错

推荐解决方案(内存直传,无需写本地文件)

无需将DataFrame保存到本地磁盘,直接在内存中转成CSV字节流上传即可,代码如下:

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

blob_sas_url = "https://.........." # 替换为你的实际blob sas url
blob_client = BlobClient.from_blob_url(blob_sas_url)

# 将DataFrame转换为CSV格式的字节流
csv_bytes = io.BytesIO()
region.to_csv(csv_bytes, encoding='utf-8', index=False)
# 移动流指针到起始位置,避免上传空内容
csv_bytes.seek(0)

# 上传字节流到blob存储,overwrite=True表示覆盖已有同名文件,不需要可删除
blob_client.upload_blob(data=csv_bytes, overwrite=True)

可选方案(先存本地文件再上传)

如果你需要先保留本地CSV副本,可以用以下代码:

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

# 先将DataFrame保存为本地CSV文件
local_csv_path = "output_blob_name.csv"
region.to_csv(local_csv_path, encoding='utf-8', index=False)

blob_sas_url = "https://.........."
blob_client = BlobClient.from_blob_url(blob_sas_url)

# 读取本地文件上传
with open(local_csv_path, "rb") as data:
    blob_client.upload_blob(data=data, overwrite=True)

补充:如果你持有的是容器级SAS URL

如果你的sas_url是整个容器的权限,不是单个blob的,可使用容器客户端指定上传文件名:

from azure.storage.blob import ContainerClient
import pandas as pd
import io

container_sas_url = "你的容器级SAS URL"
container_client = ContainerClient.from_container_url(container_sas_url)
output_blob_name = "region.csv" # 自定义上传后的文件名

# 转CSV字节流逻辑同上
csv_bytes = io.BytesIO()
region.to_csv(csv_bytes, encoding='utf-8', index=False)
csv_bytes.seek(0)

container_client.upload_blob(name=output_blob_name, data=csv_bytes, overwrite=True)

内容的提问来源于stack exchange,提问作者spartanboy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 03:15:01