You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure存储账户:如何使用Python SDK在容器内重命名/移动Blob

同一Azure存储容器内重命名/移动Blob(Python SDK)

Azure Blob Storage没有提供直接的重命名或移动API,要实现你需要的路径修改(从container-a/folder1/file1.jpg到container-a/folder2/file2.jpg),核心思路是先复制原Blob到新路径,再删除原Blob。以下是具体实现步骤:

1. 安装依赖

确保已安装Azure Blob Storage Python SDK:

pip install azure-storage-blob

2. 实现代码示例

from azure.storage.blob import BlobServiceClient, BlobClient

# 替换为你的存储账户连接字符串
connection_string = "your-storage-account-connection-string"
container_name = "container-a"

# 源Blob路径和目标Blob路径
source_blob_path = "folder1/file1.jpg"
target_blob_path = "folder2/file2.jpg"

# 初始化Blob服务客户端
blob_service_client = BlobServiceClient.from_connection_string(connection_string)

# 获取源Blob和目标Blob的客户端
source_blob_client = blob_service_client.get_blob_client(container=container_name, blob=source_blob_path)
target_blob_client = blob_service_client.get_blob_client(container=container_name, blob=target_blob_path)

# 执行复制操作(异步,需等待完成)
copy_operation = target_blob_client.start_copy_from_url(source_blob_client.url)
copy_status = target_blob_client.get_blob_properties().copy.status

# 等待复制完成
while copy_status == "pending":
    copy_status = target_blob_client.get_blob_properties().copy.status

# 复制完成后删除原Blob
if copy_status == "success":
    source_blob_client.delete_blob()
    print("Blob重命名/移动完成")
else:
    print(f"复制失败,状态:{copy_status}")

关键注意事项

  • 权限要求:确保你的连接字符串或SAS令牌拥有读(源Blob)、写(目标Blob)、删除(原Blob)权限
  • 覆盖行为:如果目标路径已存在Blob,默认会被覆盖。若需避免覆盖,可在复制前检查目标Blob是否存在
  • 异步复制:大文件复制可能耗时,需通过循环等待复制状态变为success后再删除原Blob,防止数据丢失

内容的提问来源于stack exchange,提问作者freedev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 06:45:38