AzureBlob 上传错误:指定的 Blob 已存在

EEE*_*EEH 12 python azure azure-storage azure-storage-blobs

我每天都在尝试将文件上传到 Azure 容器。

上传具有相同文件的文件时出现错误:“指定的 blob 已存在”(我想覆盖该文件)

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

conn_str = yml['AZURE_BLOB']['CONN_STR']
container_name = yml['AZURE_BLOB']['CONTAINER_NAME']

# Create the BlobServiceClient that is used to call the Blob service for the storage account
blob_service_client = BlobServiceClient.from_connection_string(conn_str=conn_str)

# Create a blob client using the local file name as the name for the blob
blob_client = blob_service_client.get_blob_client(container=container_name, blob=destination_file_name)

# Upload the created file
data = fs.open(source_path,mode='rb').read()
blob_client.upload_blob(data)

print(destination_file_name+'\t......[DONE]')
Run Code Online (Sandbox Code Playgroud)

错误信息:

azure.core.exceptions.ResourceExistsError: The specified blob already exists.
RequestId:13d062cd-801e-00a4-77c7-a81c56000000
Time:2019-12-02T04:18:06.0826908Z
ErrorCode:BlobAlreadyExists
Error:None
Run Code Online (Sandbox Code Playgroud)

Iva*_*ang 38

如果要使用Blob 存储客户端库 v12覆盖现有Blob,只需在方法中添加overwrite=Trueupload_blob

这是示例代码:

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

conn_str = "xxx"
container_name = "test6"

blob_service_client = BlobServiceClient.from_connection_string(conn_str=conn_str)
blob_client = blob_service_client.get_blob_client(container=container_name,blob="a1.txt")

with open("F:\\temp\\a1.txt","rb") as data:
    blob_client.upload_blob(data,overwrite=True)

print("**completed**")
Run Code Online (Sandbox Code Playgroud)

执行代码后,将上传新的 blob,并且可以覆盖现有的 blob。截图如下:

在此处输入图片说明