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

如何使用Python重命名Azure存储资源管理器中的现有Blob

Python重命名Azure Blob文件的正确方法

你之前的代码用的是旧版Azure Storage SDK(v2.x)的API,现在官方已经废弃了这些接口,改用v12+的新SDK,所以找不到blob_service和BlockBlobService。下面是基于最新SDK的实现步骤:

1. 安装最新的Azure Blob存储SDK

pip install azure-storage-blob

2. 重命名Blob的代码实现

Azure Blob没有原生的重命名接口,标准流程是复制源Blob到新名称,再删除原Blob,代码示例如下:

from azure.storage.blob import BlobServiceClient
import time

# 替换为你的存储账户连接字符串
connection_string = "DefaultEndpointsProtocol=https;AccountName=你的存储账户名;AccountKey=你的账户密钥;EndpointSuffix=core.windows.net"

# 容器名称(对应你代码里的cloudops-resources)
container_name = "cloudops-resources"
# 源Blob的完整名称(包含路径前缀,比如outputs/abc.xlsx)
source_blob_name = "outputs/abc.xlsx"
# 重命名后的Blob名称
target_blob_name = "outputs/xyz.xlsx"

# 初始化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_name)
target_blob_client = blob_service_client.get_blob_client(container=container_name, blob=target_blob_name)

# 发起复制操作
copy_result = target_blob_client.start_copy_from_url(source_blob_client.url)

# 等待复制完成(大文件需要等待,小文件可省略此步骤)
while copy_result['copy_status'] not in ['success', 'failed']:
    copy_result = target_blob_client.get_blob_properties().copy
    time.sleep(1)

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

关键说明

  • 区分容器和Blob名称:你之前的sourcePath里的cloudops-resources是容器名,outputs/属于Blob名称的路径前缀(Azure Blob没有真正的文件夹,只是用路径分隔符模拟)
  • 复制操作是异步的,所以需要等待复制状态变为success后再删除原Blob
  • 如果不需要保留原Blob,复制完成后一定要执行删除操作,否则会存在两个相同的Blob

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 12:47:30