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

如何通过Python API修改Azure Block Blob中的特定块?

可以通过Python SDK对块blob进行块级操作

不需要手动调用REST API,你需要使用BlobClient类(而非ContainerClient)来执行块级操作,以下是核心方法及说明:

  • 上传单个块:使用BlobClient.stage_block(),需指定唯一的block_id和块数据。同一个block_id重复调用会覆盖之前的块内容。
  • 提交块列表:使用BlobClient.commit_block_list(),传入已上传的块ID列表,将这些块拼接成完整的块blob。
  • 查看块列表:使用BlobClient.get_block_list(),可获取已提交、未提交或所有块的信息,用于确认块状态。
  • 替换块:用目标块的ID重新调用stage_block()上传新数据,再提交包含该块ID的块列表即可完成替换。
  • 删除块:提交块列表时,排除要删除的块ID即可,未被包含的已上传块会被丢弃。

示例代码

from azure.storage.blob import BlobClient

# 初始化BlobClient
blob_client = BlobClient.from_connection_string(
    conn_str="<你的存储账户连接字符串>",
    container_name="<目标容器名称>",
    blob_name="<目标块blob名称>"
)

# 上传两个初始块
block_id_1 = b"block-001"
block_id_2 = b"block-002"
blob_client.stage_block(block_id=block_id_1, data=b"初始块1数据")
blob_client.stage_block(block_id=block_id_2, data=b"初始块2数据")

# 提交块列表,生成完整blob
blob_client.commit_block_list([block_id_1, block_id_2])

# 替换block-002的内容
blob_client.stage_block(block_id=block_id_2, data=b"替换后的块2数据")
# 重新提交块列表,完成替换
blob_client.commit_block_list([block_id_1, block_id_2])

# 查看已提交的块
block_list = blob_client.get_block_list()
print("已提交的块ID:", [block.id.decode('utf-8') for block in block_list.committed_blocks])

ContainerClient主要负责容器层面的操作(如创建容器、列出blob等),而块级操作属于单个blob的精细化管理,因此需使用BlobClient来实现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 12:55:12