如何用Python将Pandas DataFrame保存到Azure容器指定文件夹?
Azure Blob存储:Python连接并保存DataFrame到指定虚拟文件夹
前置依赖安装
先确保安装所需库:
pip install azure-storage-blob pandas
完整实现代码
from azure.storage.blob import BlobServiceClient import pandas as pd import io # 替换为你的存储账户信息 STORAGE_ACCOUNT_NAME = "your-storage-account-name" STORAGE_ACCOUNT_KEY = "your-storage-account-key" CONTAINER_NAME = "your-container-name" TARGET_FOLDER = "Folder1/" # 虚拟文件夹需以斜杠结尾 CSV_BLOB_NAME = f"{TARGET_FOLDER}output_data.csv" # 1. 初始化Blob服务客户端 account_url = f"https://{STORAGE_ACCOUNT_NAME}.blob.core.windows.net" blob_service_client = BlobServiceClient(account_url, credential=STORAGE_ACCOUNT_KEY) # 2. 获取目标容器客户端(容器需已存在,若要自动创建可添加判断) container_client = blob_service_client.get_container_client(CONTAINER_NAME) # 3. 示例DataFrame(替换为你的实际数据) df = pd.DataFrame({ "ID": [1, 2, 3], "Name": ["Alice", "Bob", "Charlie"], "Value": [10.5, 20.7, 15.3] }) # 4. 将DataFrame转为CSV字节流(无需本地保存文件) csv_buffer = io.StringIO() df.to_csv(csv_buffer, index=False, encoding="utf-8") csv_buffer.seek(0) csv_data = csv_buffer.getvalue().encode("utf-8") # 5. 上传CSV到指定虚拟文件夹 blob_client = container_client.get_blob_client(CSV_BLOB_NAME) blob_client.upload_blob(csv_data, overwrite=True) # 可选:验证上传结果 print("已上传的Blob列表:") for blob in container_client.list_blobs(name_starts_with=TARGET_FOLDER): print(f"- {blob.name}")
关键说明
- 虚拟文件夹机制:Azure Blob存储没有真实的文件夹,
Folder1/是Blob路径的前缀,上传带该前缀的Blob后,Azure门户会自动显示为文件夹结构,无需单独创建。若要确保"文件夹"存在,只需上传任意Blob到该前缀下即可。 - 库版本兼容:代码基于
azure-storage-blob v12+(最新稳定版),旧版v2.x的API已废弃,这可能是你旧代码无效的原因。 - 权限验证:确保使用的存储账户密钥拥有Blob数据 Contributor或更高权限,否则会出现上传失败。
- 覆盖控制:
overwrite=True会覆盖同名Blob,若需避免覆盖可改为overwrite=False,此时若Blob已存在会抛出异常。
内容的提问来源于stack exchange,提问作者Dolly
相关产品推荐
相关产品推荐

