Python无需下载读取Azure Blob Storage JSON文件存入Pandas咨询
解决方案
你不需要把文件下载到本地磁盘,直接通过Azure SDK提供的download_blob()方法将Blob内容读取到内存流中即可直接解析,完全不会生成本地文件。
前置依赖
确保你已经安装了必要的依赖包:
- azure-storage-blob
- pandas
完整实现代码
import json import pandas as pd from azure.storage.blob import ContainerClient # 初始化容器客户端,替换为你自己的连接串和容器名 container = ContainerClient.from_connection_string("<my connection str>", "<MyContainer>") blob_list = container.list_blobs() # 提前创建列表存储所有解析后的JSON数据,后续一次性转DataFrame效率更高 json_data_list = [] for blob in blob_list: # 过滤只处理名为knowledge.json的文件,跳过其他无关文件 if not blob.name.endswith("knowledge.json"): continue # 获取Blob客户端 blob_client = container.get_blob_client(blob) # 直接将Blob内容下载到内存,不会写入本地磁盘 blob_content = blob_client.download_blob().readall() # 解析字节内容为JSON json_data = json.loads(blob_content.decode("utf-8")) # 将解析后的JSON加入列表 json_data_list.append(json_data) # 所有数据读取完成后一次性转为DataFrame df = pd.DataFrame(json_data_list)
之前报错的原因说明
- 方案1报错原因:
blob.name是Blob在容器中的路径字符串(格式为UUID文件夹名/knowledge.json),并不是JSON文件的实际内容,直接传给json.loads自然会解析失败 - 方案2报错原因:
open()方法只会读取Python运行环境的本地文件系统路径,不可能直接读取云上的Blob存储路径,所以会报文件不存在
内容的提问来源于stack exchange,提问作者Evan Mata
相关产品推荐
相关产品推荐

