python - 使用 python 从 Azure blob 读取 Json 文件?
问题描述
我需要从 Azure 中的 blob 容器读取 JSON 文件,以便在 JSON 文件之上进行一些转换。我看过很少的文档和 StackOverflow 的答案,并开发了一个 python 代码来从 blob 中读取文件。
我已经从 Stackoverflow 答案之一尝试了以下脚本来读取 JSON 文件,但出现以下错误
“TypeError:JSON 对象必须是 str、字节或字节数组,而不是 BytesIO”
我是 python 编程的新手,所以不确定代码中的问题。我尝试使用 download_stream.content_as_text() 但文件没有读取文件而没有任何错误。
from azure.storage.blob import BlobServiceClient, BlobClient, ContainerClient
from io import BytesIO
import requests
from pandas import json_normalize
import json
filename = "sample.json"
container_name="test"
constr = ""
blob_service_client = BlobServiceClient.from_connection_string(constr)
container_client=blob_service_client.get_container_client(container_name)
blob_client = container_client.get_blob_client(filename)
streamdownloader=blob_client.download_blob()
stream = BytesIO()
streamdownloader.download_to_stream(stream)
# with open(stream) as j:
# contents = json.loads(j)
fileReader = json.loads(stream)
print(filereader)
解决方案
你可以使用readall
函数。请尝试以下代码:
from azure.storage.blob import BlobServiceClient, BlobClient, ContainerClient
import json
filename = "sample.json"
container_name="test"
constr = ""
blob_service_client = BlobServiceClient.from_connection_string(constr)
container_client = blob_service_client.get_container_client(container_name)
blob_client = container_client.get_blob_client(filename)
streamdownloader = blob_client.download_blob()
fileReader = json.loads(streamdownloader.readall())
print(fileReader)
推荐阅读
- java - Java 中的 Spark Streaming 单元测试
- php - AngularJS HTTP请求与另一个功能
- kubernetes - 如何确定作业是否失败
- javascript - 使用 JavaScript 循环遍历 XML 节点并输出 HTML 表
- javascript - 使用foreach遍历调用异步函数,返回结果请求不正常?
- firebase - 使用多个应用进行 Firebase A/B 测试?
- c++ - 如何使用空字段改进 std::tuple?
- python - 使用 Pandas 根据另一列的数据将列的数据插入另一列
- batch-file - 如何在文件中搜索字符串?
- r - 将范围内的输出列值替换为“真”