gpt4 book ai didi

python - 如何在 python 脚本中创建文件而不将其存储在本地目录中并将其保存在 azure blob 存储上的不同容器中?

转载 作者:行者123 更新时间:2023-12-02 07:42:37 27 4
gpt4 key购买 nike

因为我想将此代码部署为 azure 容器实例,所以我不想从计算机上的本地路径读取文件。基本上,我从 Azure Blob 存储中的容器中检索文件,然后将其保存在不同的容器中。将进行一些处理来更改 blob 存储中的文件并将处理后的文件上传到不同的容器中。在我的代码中,为了简单起见,我按原样上传文件,而不对其进行处理和更改。到目前为止,我已设法从 Blob 存储中读取文件并从中创建本地文件,并将本地文件上传到 Blob 存储上的不同容器,但我不想创建本地文件。我想处理 blob 存储中的文件并将其直接上传到不同的容器,而不将其存储在本地路径中。有人可以帮我解决一下吗?我有以下代码:

from azure.storage.blob import BlobServiceClient, BlobClient, ContainerClient
import json

class FileProcessing:

def __init__(self):
self.file_access()

def file_access(self):
filename = "data_map.json"

container_name="filestorage"
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())

#Here it stores it in a local directory on my computer; I want it saved on Azure directly
#For simplicity I am not making any changes to the file yet
with open('json_data.json', 'w') as outfile:
json.dump(fileReader, outfile)

container_name2="filedeposit"

container_client = ContainerClient.from_connection_string(constr, container_name2)
print("Uploading files to blob storage")

blob_client= container_client.get_blob_client("json_data.json")
with open(r"C:\Users\python-test\json_data.json", "rb") as data:
blob_client.upload_blob(data)
print("file uploaded")


if __name__ == "__main__":
FileProcessing()

最佳答案

您实际上并不需要将数据写入文件。您只需将 JSON 数据转换为字符串然后上传即可。像这样的东西(尽管未经测试的代码):

from azure.storage.blob import BlobServiceClient, BlobClient, ContainerClient
import json

class FileProcessing:

def __init__(self):
self.file_access()

def file_access(self):
filename = "data_map.json"

container_name="filestorage"
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())
#Read the data into string
data = json.dumps(fileReader)

container_name2="filedeposit"

container_client = ContainerClient.from_connection_string(constr, container_name2)
print("Uploading files to blob storage")

blob_client= container_client.get_blob_client("json_data.json")
blob_client.upload_blob(data)
print("file uploaded")


if __name__ == "__main__":
FileProcessing()

关于python - 如何在 python 脚本中创建文件而不将其存储在本地目录中并将其保存在 azure blob 存储上的不同容器中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72621117/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com