gpt4 book ai didi

python - 将文件上传到 Blob 存储上的 Azure 容器时排除子文件夹

转载 作者:行者123 更新时间:2023-12-03 06:12:23 25 4
gpt4 key购买 nike

我正在使用 Azure 的 sample code在 Python 中将文件上传到 Azure Blob 存储上的容器中。示例如下:

def upload_blob_file(self, blob_service_client: BlobServiceClient, container_name: str):
container_client = blob_service_client.get_container_client(container=container_name)
with open(file=os.path.join('filepath', 'filename'), mode="rb") as data:
blob_client = container_client.upload_blob(name="sample-blob.txt", data=data, overwrite=True)

当我在 Mac 上的 Azure 容器中运行此程序时,我只能看到文件本身已上传。但是,当我在 Windows 计算机(在我的例子中为 10 Pro)上运行代码时,我发现所有子文件夹也都随文件一起上传。例如,假设我的容器在 Azure 上的名称是 container1,我想要上传到 Azure 的文件存储在我的本地计算机上的以下路径中:/Users/[my-username]/PycharmProjects/project1/data/file1.txt。当我运行代码时:

  • Mac、Azure 上的容器内容:container1/file1.txt
  • Windows、Azure 上的容器内容:container1/C/Users/[my-username]/PycharmProjects/project1/data/file1.txt

当我从 Windows 运行代码时,如何排除在 Blob 存储上创建的文件夹和子文件夹?

最佳答案

我尝试使用下面的 python 代码将 blob 上传到 Windows 中的存储帐户容器。

我在 file_name = os.path.basename(local_file_path) 中进行了更改,用于排除文件夹和子文件夹。

代码:

import os
from azure.storage.blob import BlobServiceClient

def UploadBlobFile(blob_service_client: BlobServiceClient, ContainerName: str):
ContainerClient = blob_service_client.get_container_client(container=ContainerName)
local_file_path = 'path/to/sample-blob.txt'
file_name = os.path.basename(local_file_path)
with open(file=local_file_path, mode="rb") as data:
blob_client = ContainerClient.upload_blob(name=file_name, data=data, overwrite=True)

Connec_string = '<storage_connec_string>'
ContainerName = '<container_name>'

blob_service_client = BlobServiceClient.from_connection_string(Connec_string)
UploadBlobFile(blob_service_client, ContainerName)

输出:

运行成功如下,

enter image description here

Blob 已成功上传到 Azure 门户中的我的存储帐户容器,如下所示,

enter image description here

关于python - 将文件上传到 Blob 存储上的 Azure 容器时排除子文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76610386/

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