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
相关产品推荐
相关产品推荐

