如何使用Python更新或覆盖已存在的Azure blob存储中的文件内容
问题解决方法
报错原因
BlobAlreadyExists报错是因为Azure Blob存储的Python SDK中,upload_blob方法默认不允许覆盖已存在的同名Blob,只要目标容器内有对应名称的文件,就会直接触发该错误。
修复方案
只需要在调用upload_blob方法时,添加overwrite=True参数即可开启覆盖权限,修改后的代码如下:
import datetime from azure.storage.blob import BlobServiceClient, BlobClient maxdate = datetime.datetime.now() now = maxdate.strftime("%m-%d-%YT%H:%M:%S") def upload_to_blob(data): conn_str = "<conn_str>" blob_service_client = BlobServiceClient.from_connection_string(conn_str) blob_client = blob_service_client.get_blob_client(container="vstscontainerreleases", blob="last_run.txt") # 添加overwrite参数允许覆盖已有Blob blob_client.upload_blob(data, overwrite=True) upload_to_blob(now)
额外说明
如果你的使用场景存在多进程同时写入该Blob的情况,为了避免意外覆盖,可以不用overwrite参数,改用先删除旧Blob再上传新Blob的逻辑,或者搭配if_match参数实现乐观锁控制。如果只是单进程定期写入记录运行时间,上述加overwrite=True的方案完全可以满足需求。
内容的提问来源于stack exchange,提问作者Harvey
相关产品推荐
相关产品推荐

